Como converter um duplo em um inteiro no Dart?

105

O seguinte produz o erro abaixo:

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

O tipo de retorno doublenão é um int, conforme definido pelo método calc_ranks. Como faço para arredondar / lançar para um int?

Todd Chambery
fonte

Respostas:

141

Arredonde usando o round()método:

int calc_ranks(ranks) {
    double multiplier = .5;
    return (multiplier * ranks).round();
}
dobra direita
fonte
15
Ou trunque-o para int: return (multiplier * ranks) .toInt (); (consulte api.dartlang.org/docs/channels/stable/latest/dart_core/… )
Everton
2
@Evertion Tive casos em que (0.57 * 100).toInt()resolvi 56, então pessoal, tenham cuidado.
最 白 目
71

Você pode simplesmente usar toInt () para converter a numem um int.

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

Observe que, para fazer exatamente a mesma coisa, você pode usar o operador Truncating division :

int calc_ranks(ranks) => ranks ~/ 2;
Alexandre Ardhuin
fonte
70

Você pode usar qualquer um dos seguintes.

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
fonte
Então, qual é a diferença entre toInt e floor ou round and ceil
Hector Aguero
0

Dart redondo duplo para int

Usando o round()método, podemos obter um inteiro mais próximo de um duplo.

Por exemplo:

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

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

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

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

Você também pode tentar esses métodos converter double para int em um 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
fonte
Em primeiro lugar, essa questão não era sobre o que roundsignifica em Dart. Em segundo lugar, o resto das coisas são apenas copiadas da resposta existente . Por favor, não faça spam assim. Você está apenas COPIANDO outras respostas.
iDecode
@iDecode P: "Como converter um duplo em um inteiro no Dart?" Esta resposta: "Usando round () podemos obter um número inteiro mais próximo de um duplo". Por que você acha que a resposta não está relacionada à pergunta?
Ruben
@Ruben Esta resposta já foi fornecida por outro usuário. Não há vantagem em postar a mesma coisa repetidamente.
iDecode
Eu já disse que de agora em diante eu vou cuidar, mesmo assim, por que você está deixando um comentário por votação negativa. Embora o método seja o mesmo nisso, mas tente explicá-lo de forma diferente, desta forma eu dei um exemplo de como pegar o número
Paresh Mangukiya
Neste, tentei explicar como um inteiro está mais próximo de um duplo. por este 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