Wie konvertiere ich ein Double in ein Int in Dart?

97

Folgendes erzeugt den folgenden Fehler:

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

Der Rückgabetyp doubleist kein a int, wie von der Methode definiert calc_ranks. Wie runde / wirke ich zu einem int?

Todd Chambery
quelle

Antworten:

130

Runden Sie es mit der round()Methode ab:

int calc_ranks(ranks) {
    double multiplier = .5;
    return (multiplier * ranks).round();
}
Rechtsfalte
quelle
13
Oder kürzen Sie es auf int: return (Multiplikator * Ränge) .toInt (); (siehe api.dartlang.org/docs/channels/stable/latest/dart_core/… )
Everton
2
@Evertion Ich hatte Fälle, in denen (0.57 * 100).toInt()gelöst wurde 56, also Jungs, seid vorsichtig.
白 目
68

Sie können einfach toInt () verwenden , um a numin a zu konvertieren int.

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

Beachten Sie, dass Sie den Operator Truncating Division verwenden können, um genau dasselbe zu tun :

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

Sie können eine der folgenden Optionen verwenden.

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
quelle
Also, was ist der Unterschied zwischen toInt und Boden oder rund und Decke
Hector Aguero
0

Dart Round Double zu Int

Mit der round()Methode können wir eine Ganzzahl erhalten, die einem Doppel am nächsten kommt.

Zum Beispiel:

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

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

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

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

Sie können auch versuchen, diese Methoden in einem Flutter doppelt in int umzuwandeln

  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
quelle
Erstens ging es bei dieser Frage nicht darum, was roundDart bedeutet. Zweitens wird der Rest der Dinge nur aus der vorhandenen Antwort kopiert . Bitte spammen Sie nicht so. Sie kopieren nur andere Antworten.
iDecode
@iDecode F: "Wie konvertiere ich ein Double in ein Int in Dart?" Diese Antwort: "Mit round () können wir eine Ganzzahl erhalten, die einem Doppel am nächsten kommt". Wie kommt es, dass die Antwort nicht mit der Frage zusammenhängt?
Ruben
@Ruben Diese Antwort wird bereits von einem anderen Benutzer bereitgestellt. Es hat keinen Vorteil, immer wieder dasselbe zu posten.
iDecode
Ich habe Ihnen bereits gesagt, dass ich mich von nun an darum kümmern werde, auch dann, warum hinterlassen Sie einen Kommentar, indem Sie abstimmen. Während die Methode in dieser Hinsicht dieselbe ist, aber versuchen Sie es anders zu erklären, habe ich auf diese Weise ein Beispiel gegeben, wie man die Zahl nimmt
Paresh Mangukiya
In diesem habe ich versucht zu erklären, wie eine ganze Zahl einem Doppel am nächsten kommt. durch diese 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