close
The Wayback Machine - https://web.archive.org/web/20220701165429/https://learn.javascript.ru/task/endless-loop-error
вернуться к уроку

Бесконечный цикл по ошибке

важность: 4

Этот цикл – бесконечный. Он никогда не завершится, почему?

let i = 0;
while (i != 10) {
  i += 0.2;
}

Потому что i никогда не станет равным 10.

Запустите скрипт и вы увидите реальные значения i:

let i = 0;
while (i < 11) {
  i += 0.2;
  if (i > 9.8 && i < 10.2) alert( i );
}

Ни одно из этих чисел не равно 10.

Это происходит из-за потери точности, при прибавлении таких дробей как 0.2.

Вывод: избегайте проверок на равенство при работе с десятичными дробями.