Berkaitan dengan hal ini ada banyak artikel yang membahasnya seperti artikel berikut ini: What Every Computer Scientist Should Know About Floating-Point Arithmetic. Silahkan baca dulu jika kamu penasaran dengan apa yang terjadi sebenarnya, karena di sini kita tidak akan membahasnya.
Coba lihat kode dibawah ini:
echo (int) ((0.1 + 0.7) * 10);
Menurut kamu berapa hasilnya? 8! Salah hasilnya adalah 7. Lho ko bisa seperti itu?
Sekarang coba lihat apa yang sebenarnya terjadi:
0.1 + 0.7 = 0.79999999999
Hasil dari operasi aritmetika ini sebenarnya disimpan di dalam memori sebagai 0.7999999 bukan 0.8 hal ini berkaitan dengan isu presisi dari komputer itu sendiri. Selanjutnya 0.79999999 * 10 = 7.999999999 maka jika hasil ini kita cast maka (int) 7.9999999 = 7.
Ada beberapa hal yang mungkin haru diperhatikan, jika kamu melakukan casting terhadap hasil dari perhitungan dengan int maka hasilnya akan salah, yakni seperti perhitungan di atas, tetapi jika kamu melakukan casting dengan float atau tidak melakukan casting sama sekali maka hasilnya adalah 8.
Semoga membantu.

Makasih udah berkunjung, kapan-kapan saya pasti berkunjung ke blog http://duniainformatikaindonesia.blogspot.com/
BalasHapus