Как преобразовать 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, так что, ребята, будьте осторожны.
最 白 目
68

Вы можете просто использовать toInt () для преобразования a numв int.

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

Обратите внимание: чтобы сделать то же самое, вы можете использовать оператор деления усечения :

int calc_ranks(ranks) => ranks ~/ 2;
Александр Ардуин
источник
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
CopsOnRoad
источник
Итак, в чем разница между 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