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

Resuelto Todd Chambery asked hace 10 años • 11 respuestas

Lo siguiente produce el siguiente error:

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

El tipo de retorno doubleno es a int, tal como lo define el método calc_ranks. ¿Cómo redondeo/lanzo a un int?

Todd Chambery avatar Dec 26 '13 23:12 Todd Chambery
Aceptado

Redondealo usando el round()método:

int calc_ranks(ranks) {
    double multiplier = .5;
    return (multiplier * ranks).round();
}
 avatar Dec 26 '2013 17:12

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 avatar Nov 25 '2018 09:11 CopsOnRoad

Simplemente puedes usar toInt() para convertir a numen 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 truncada :

int calc_ranks(ranks) => ranks ~/ 2;
Alexandre Ardhuin avatar Dec 26 '2013 17:12 Alexandre Ardhuin

Veo muchas respuestas, pero con menos descripción. Espero que mi respuesta agregue algún valor. Inicialicemos la variable y veamos cómo cambiará con diferentes métodos.

 double x = 8.5;

toInt()

Trunca el valor decimal.

 int a = x.toInt();
 print(a); // 8

truncar()

También trunca el valor decimal.

 int b = x.truncate();
 print(b); // 8

redondo()

Devuelve el número entero más cercano. Utiliza el modo de redondeo a la mitad.

  int c = x.round();
  print(c); // 9

fortificar techo()

Devuelve el número entero más cercano mayor que el valor.

  int c = x.ceil();
  print(c); // 9

piso()

Devuelve el número entero más cercano menor que el valor.

  int c = x.floor();
  print(c); // 8

Jitesh Mohite avatar Jun 29 '2021 16:06 Jitesh Mohite