Laman

Senin, 06 Mei 2013

Infinity Loop yang Tersembunyi

Jika kita menggunakan basis 10, maka 0,1 akan ditambahkan ke x sebanyak 100kali sampai mencapai 10,0 dengan tepat. Tapi komputer menggunakan basis dua floating point, yang artinya tidak merepresentasikan nilai 0,1 secara tepat. Variabel x bisa jadi tidak akan mencapai nilai 10,0 dengan tepat dan program tidak akan looping tanpa henti.


float x;

for ( x = 0.0; x != 10.0; x += 0.1 )
{
  System.out.println("Crimson and Clover");
}

Tidak hanya fixed point yang tidak bisa merepresentasikan sepersepuluh dengan benar, tetapi juga floating point yang biasa dipakai di bahasa pemrograman juga memiliki masalah yang sama.


Tidak ada komentar:

Posting Komentar