Dalam contoh yang diberikan, desimal Anda adalah 8,6 . Jika 8,5 atau 9,5, pernyataan i1 == i2 mungkin benar. Faktanya itu akan benar untuk 8,5, dan salah untuk 9,5.
Penjelasan:
Terlepas dari bagian desimalnya, pernyataan kedua, int i2 = (int)score
akan membuang bagian desimal dan hanya mengembalikan Anda bagian bilangan bulat. Hal yang cukup berbahaya untuk dilakukan, karena kehilangan data dapat terjadi.
Nah, untuk pernyataan pertama, dua hal bisa terjadi. Jika bagian desimal adalah 5, yaitu setengah jalan, keputusan harus dibuat. Apakah kita membulatkan ke atas atau ke bawah? Di C #, kelas Convert mengimplementasikan pembulatan bankir. Lihat jawaban ini untuk penjelasan lebih dalam. Sederhananya, jika angkanya genap, bulatkan ke bawah, jika angkanya ganjil, bulatkan ke atas.
Misalnya Pertimbangkan:
double score = 8.5;
int i1 = Convert.ToInt32(score); // 8
int i2 = (int)score; // 8
score += 1;
i1 = Convert.ToInt32(score); // 10
i2 = (int)score; // 9
Math.Truncate(score)
adalah niat yang lebih eksplisit diungkapkan daripada(int)score