Un ciclo infinito occasionale
importanza: 4
Questo è un ciclo infinito. Non terminerà mai. Perchè?
let i = 0;
while (i != 10) {
i += 0.2;
}
Questo accade perché i
non sarà mai uguale 10
.
Eseguitelo per vedere il vero risultato di i
:
let i = 0;
while (i < 11) {
i += 0.2;
if (i > 9.8 && i < 10.2) alert( i );
}
Nessuno di questi sarà esattamente 10
.
Questo tipo di errori accadono a causa della perdita di precisione quando sommiamo decimali come 0.2
.
Conclusione: evitate controlli di uguaglianza quando utilizzate numeri decimali.