Sejauh yang saya ingat pada diri saya sendiri pemrograman saya diajarkan untuk tidak membandingkan angka floating point untuk kesetaraan. Sekarang, ketika membaca Pemrograman di Lua tentang number
tipe Lua , saya menemukan berikut:
Jenis angka mewakili angka nyata (titik presisi mengambang-ganda). Lua tidak memiliki tipe integer, karena tidak memerlukannya. Ada kesalahpahaman yang tersebar luas tentang kesalahan aritmatika floating-point dan beberapa orang takut bahwa kenaikan sederhana pun bisa aneh dengan angka floating-point. Faktanya adalah bahwa, ketika Anda menggunakan ganda untuk mewakili integer, tidak ada kesalahan pembulatan sama sekali (kecuali jumlahnya lebih dari 100.000.000.000.000). Secara khusus, nomor Lua dapat mewakili bilangan bulat panjang tanpa masalah pembulatan. Selain itu, sebagian besar CPU modern melakukan aritmatika floating-point secepat (atau bahkan lebih cepat dari) aritmatika integer.
Apakah itu berlaku untuk semua bahasa? Pada dasarnya jika kita tidak melampaui floating point dalam dobel, kita aman dalam aritmatika bilangan bulat? Atau, agar lebih sesuai dengan judul pertanyaan, apakah ada sesuatu yang istimewa yang Lua lakukan dengan number
tipenya sehingga berfungsi dengan baik sebagai tipe integer dan float-point?