Minggu, 03 Maret 2013

PHP: Perhitungan Floating Point yang Tidak Tepat


Banyak diantara kita yang mungkin sudah tahu bahwa nilai floating poin tidak terlalu menunjukkan nilai secara tepat sebenarnya. Selain itu perhitungan dari dua angka terkadang bisa menghasilkan angka yang tidak tepat. Ini diakibatkan dari pesisi/ketepatan dari komputer dalam merepresentasikan sebuah angka maka dari itu sebenarnya hal ini tidak hanya berefek pada php saja tetapi bahasa pemrograman lain. Ketidaktepattan perhitungan nilai floating poin ini telah membuat kita sebagai programer pusing bukan main.


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.

1 komentar:

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

    BalasHapus