kembali ke pelajaran

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.