Lingkaran tak terbatas tak berkala
Loop ini tidak terbatas. Tidak pernah berakhir. Mengapa?
let i = 0;
while (i != 10) {
i += 0.2;
}
Itu karena i
tidak akan pernah sebanding dengan 10
.
Jalankan ini untuk melihat nilai real dari i
:
let i = 0;
while (i < 11) {
i += 0.2;
if (i > 9.8 && i < 10.2) alert( i );
}
Tidak satu pun dari mereka yang benar-benar 10
.
Hal-hal seperti itu terjadi karena kehilangan presisi ketika menambahkan pecahan seperti 0,2
.
Kesimpulan: menghindari pemeriksaan kesetaraan saat bekerja dengan pecahan desimal.