하지만 결과가 이상하게 출력됩니다. 0.3과 비슷하지만 아주 작은 차이가 있습니다. 간단히 설명하면, 컴퓨터는 1과 0밖에 알지 못합니다. 그런데 2진법으로 실수를 표현하면 무한 반복되는 실수가 있어서 어쩔 수 없이 근삿값으로 저장합니다. 그래서 10진법으로 계산한 결과와 차이가 발생하는 경우가 생깁니다. 바로 이것이 대부분의 프로그래밍 언어가 겪고 있는 부동소수점 문제입니다. 0.1 + 0.2도 이러한 이유로 오차가 발생합니다.
> 0.3 - 0.1;
< 0.19999999999999998
이외에도 다양한 실수 연산에서 오차가 발생하기 때문에 실수를 계산할 때는 다른 방법을 주로 사용합니다. 가장 간단한 방법은 실수를 정수로 바꿔 계산하고 마지막에 다시 실수로 바꾸는 것입니다.
> (0.3 * 10 - 0.1 * 10) / 10;
< 0.2