Jak przekonwertować double na int w Dart?

105

Poniższy błąd powoduje następujący błąd:

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

Zwracany typ doublenie jest a int, zgodnie z definicją w metodzie calc_ranks. Jak zaokrąglić / zarzucić do int?

Todd Chambery
źródło

Odpowiedzi:

141

Zaokrąglij go round()metodą:

int calc_ranks(ranks) {
    double multiplier = .5;
    return (multiplier * ranks).round();
}
prawy
źródło
15
Lub skróć go do int: return (mnożnik * rang) .toInt (); (patrz api.dartlang.org/docs/channels/stable/latest/dart_core/… )
Everton,
2
@Evertion Miałem przypadki, w których (0.57 * 100).toInt()rozwiązano 56, więc chłopaki, bądźcie ostrożni.
最 白 目
71

Możesz po prostu użyć toInt (), aby przekonwertować a numna plik int.

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

Zauważ, że aby zrobić dokładnie to samo, możesz użyć operatora dzielenia obcięcia :

int calc_ranks(ranks) => ranks ~/ 2;
Alexandre Ardhuin
źródło
70

Możesz użyć dowolnego z poniższych.

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
źródło
Jaka jest więc różnica między toInt a floor lub round and ceil
Hector Aguero
0

Rzutki okrągłe podwójne do int

Za pomocą round()metody możemy otrzymać liczbę całkowitą najbliższą podwójnej.

Na przykład:

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

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

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

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

Możesz także wypróbować te metody konwersji double na int we Flutterze

  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
źródło
Po pierwsze, to pytanie nie dotyczyło tego, co roundoznacza w Dart. Po drugie, reszta rzeczy jest tylko kopiowana z istniejącej odpowiedzi . Proszę, nie spamuj tak. KOPIUJESZ tylko inne odpowiedzi.
iDecode,
@iDecode P: „Jak zamienić podwójne na int w Dart?” Ta odpowiedź: „Używając round () możemy otrzymać liczbę całkowitą najbliższą podwójnej”. Jak myślisz, dlaczego odpowiedź nie jest związana z pytaniem?
Ruben
@Ruben Ta odpowiedź została już udzielona przez innego użytkownika. Nie ma korzyści z ciągłego publikowania tego samego.
iDecode
Już wam powiedziałem, że od teraz będę się zajmować, nawet wtedy dlaczego zostawiacie komentarz poprzez głosowanie przeciw. Chociaż metoda jest taka sama, ale spróbuj wyjaśnić ją inaczej, w ten sposób
podałem
W tym próbowałem wyjaśnić, w jaki sposób liczba całkowita jest najbliższa podwójnej. przez to 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