Un bucle infinito ocasional
importancia: 4
Este bucle es infinito. Nunca termina, ¿por qué?
let i = 0;
while (i != 10) {
i += 0.2;
}
Es porque i
nunca sería igual a 10
.
Ejecuta esto para ver los valores reales de i
:
let i = 0;
while (i < 11) {
i += 0.2;
if (i > 9.8 && i < 10.2) alert( i );
}
Ninguno de ellos es exactamente 10
.
Tales cosas suceden por las pérdidas de precisión cuando sumamos decimales como 0.2
.
Conclusión: evita chequeos de igualdad al trabajar con números decimales.