돌아가기

무한 루프

중요도: 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 );
}

어떤 경우에도 i10이 될 수 없습니다.

이런 일이 발생하는 이유는 0.2와 같은 분수를 더할 때 정밀도 손실이 발생하기 때문입니다.

그러므로 소수나 분수를 대상으로 작업 할 땐 등호 비교를 피하세요.