¿Cómo convertir un doble a un int en Dart?

96

Lo siguiente produce el siguiente error:

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

El tipo de retorno doubleno es a int, según lo definido por el método calc_ranks. ¿Cómo redondeo / lanzo a un int?

Todd Chambery
fuente

Respuestas:

128

Redondea usando el round()método:

int calc_ranks(ranks) {
    double multiplier = .5;
    return (multiplier * ranks).round();
}
pliegue derecho
fuente
13
O truncarlo a int: return (multiplicador * rangos) .toInt (); (ver api.dartlang.org/docs/channels/stable/latest/dart_core/… )
Everton
2
@Evertion Tuve casos en los que se (0.57 * 100).toInt()resolvieron 56, así que muchachos, tengan cuidado.
最 白 目
68

Simplemente puede usar toInt () para convertir un numen un int.

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

Tenga en cuenta que para hacer exactamente lo mismo, puede utilizar el operador de división Truncar :

int calc_ranks(ranks) => ranks ~/ 2;
Alexandre Ardhuin
fuente
65

Puede utilizar cualquiera de los siguientes.

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
fuente
Entonces, ¿cuál es la diferencia entre toInt y floor o round y ceil
Hector Aguero hace
0

Dardo redondo doble a int

Usando el round()método, podemos obtener un número entero más cercano a un doble.

Por ejemplo:

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

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

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

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

También puede intentar que esos métodos conviertan double a int en un 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
Paresh Mangukiya
fuente
Primero, esta pregunta no se trataba de qué roundsignifica en Dart. En segundo lugar, el resto de las cosas solo se copian de la respuesta existente . Por favor, no envíes spam TAN así. Solo COPIAS otras respuestas.
iDecode hace
@iDecode P: "¿Cómo convertir un doble en un int en Dart?" Esta respuesta: "Usando round () podemos obtener un número entero más cercano a un doble". ¿Por qué cree que la respuesta no está relacionada con la pregunta?
Ruben hace
@Ruben Esta respuesta ya la ha proporcionado otro usuario. No hay ningún beneficio en publicar lo mismo una y otra vez.
iDecode hace
Ya les he dicho que de ahora en adelante me ocuparé, incluso entonces, ¿por qué dejan un comentario en contra de la votación? Si bien el método es el mismo en esto, pero trato de explicarlo de manera diferente, de esta manera he dado un ejemplo de cómo tomar el número
Paresh Mangukiya hace
En esto he tratado de explicar cómo un número entero está más cerca de un doble. por esto 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 hace