Как преобразовать double в int в Dart?


96

Следующее вызывает следующую ошибку:

int calc_ranks(ranks)
{
  double multiplier = .5;
  return multiplier * ranks;
}

Возвращаемый тип doubleне является a int, как определено методом calc_ranks. Как мне округлить / преобразовать в int?

Ответы:


128

Округлите его, используя round()метод:

int calc_ranks(ranks) {
    double multiplier = .5;
    return (multiplier * ranks).round();
}

13
Или усечь его до int: return (multiplier * ranks) .toInt (); (см. api.dartlang.org/docs/channels/stable/latest/dart_core/… )
Эвертон,

2
@Evertion У меня были случаи, когда я принимал (0.57 * 100).toInt()решение 56, так что, ребята, будьте осторожны.
最 白 目


65

Вы можете использовать любое из следующего.

double d = 20.5;

int i = d.toInt(); // i = 20
int i = d.round(); // i = 21
int i = d.ceil();  // i = 21
int i = d.floor(); // i = 20

Итак, в чем разница между toInt и floor или round и ceil
Гектор Агуэро

0

Dart round double to int

Используя round()метод, мы можем получить целое число, наиболее близкое к двойному.

Например:

int num1 = (2.3).round();
// 2

int num2 = (2.5).round();
// 3

int num3 = (-2.3).round();
// -2

int num4 = (-2.5).round();
// -3

Вы также можете попробовать эти методы преобразовать double в int во Flutter

  double x = 2.5;
 
  int a = x.toInt();
  int b = x.truncate();
  int c = x.round();
  int d = x.ceil();
  int e = x.floor();
 
  print(a); // 2
  print(b); // 2
  print(c); // 3
  print(d); // 3
  print(e); // 2

Во-первых, этот вопрос был не о том, что roundозначает в Dart. Во-вторых, все остальное только скопировано из существующего ответа . Пожалуйста, не спамите ТАК как это. Вы только КОПИРУЕТЕ другие ответы.
iDecode

@iDecode Q: "Как преобразовать double в int в Dart?" Этот ответ: «Используя round (), мы можем получить целое число, наиболее близкое к двойному». Почему вы думаете, что ответ не имеет отношения к вопросу?
Рубен

@Ruben Этот ответ уже предоставлен другим пользователем. Нет смысла публиковать одно и то же снова и снова.
iDecode

Я уже сказал вам, что с этого момента я позабочусь о том, даже тогда, почему вы оставляете комментарий отрицательным голосованием. Хотя в этом метод тот же, но попробуйте объяснить это по-другому, таким образом я
привел

В этом я попытался объяснить, как целое число ближе всего к двойному. этим int num1 = (2.3) .round (); // 2 int num2 = (2.5) .round (); // 3 int num3 = (-2.3) .round (); // -2 int num4 = (-2.5) .round (); // -3
Paresh Mangukiya
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.