Bagaimana cara mengubah double menjadi int di Dart?

97

Berikut ini menghasilkan kesalahan di bawah ini:

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

Jenis kembalian doublebukan a int, seperti yang didefinisikan oleh metode calc_ranks. Bagaimana cara membulatkan / mentransmisikan ke sebuah int?

Todd Chambery
sumber

Jawaban:

130

Bulatkan menggunakan round()metode:

int calc_ranks(ranks) {
    double multiplier = .5;
    return (multiplier * ranks).round();
}
sebelah kanan
sumber
13
Atau potong menjadi int: return (multiplier * ranks) .toInt (); (lihat api.dartlang.org/docs/channels/stable/latest/dart_core/… )
Everton
2
@Evertion Saya memiliki kasus di mana (0.57 * 100).toInt()diselesaikan 56, jadi teman-teman, berhati-hatilah.
最 白 目
68

Anda cukup menggunakan toInt () untuk mengonversi file numke file int.

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

Perhatikan bahwa untuk melakukan hal yang persis sama Anda dapat menggunakan operator pembagian Pemotongan :

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

Anda dapat menggunakan salah satu dari berikut ini.

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
sumber
Jadi, apa perbedaan antara toInt dan lantai atau bulat dan langit
Hector Aguero
0

Putaran panah ganda ke int

Menggunakan round()metode, kita bisa mendapatkan integer yang paling dekat dengan double.

Sebagai contoh:

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

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

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

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

Anda juga dapat mencoba metode tersebut, ubah double menjadi int dalam 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
sumber
Pertama, pertanyaan ini bukanlah tentang apa roundartinya di Dart. Kedua, sisanya hanya disalin dari jawaban yang ada . Tolong jangan mengirim spam seperti ini. Anda hanya MENYALIN jawaban lain.
iDecode
@ iDecode T: "Bagaimana cara mengubah double menjadi int di Dart?" Jawaban ini: "Menggunakan round () kita bisa mendapatkan integer yang paling dekat dengan double". Kenapa menurut Anda jawabannya tidak terkait dengan pertanyaan?
Ruben
@Ruben Jawaban ini sudah disediakan oleh pengguna lain. Tidak ada manfaatnya memposting hal yang sama berulang kali.
iDecode
Sudah saya katakan bahwa mulai sekarang saya akan jaga, bahkan mengapa Anda meninggalkan komentar dengan down-voting. Meskipun metodenya sama dalam hal ini, tetapi coba jelaskan secara berbeda, dengan cara ini saya telah memberikan contoh cara mengambil nomor
Paresh Mangukiya
Dalam hal ini saya telah mencoba menjelaskan bagaimana integer paling dekat dengan double. dengan ini 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