본문 바로가기

Programing/웹

[JavaScript] 부동소수점의 오류 예

컴퓨터의 부동소수점의 정밀도 문제는 오래전 부터 알려진 사실이다.


자바스크립트에서도 그 예를 쉽게 찾을 수 있는데, 기록을 해놓지 않으면 예를 들 때 바로 생각해 내지 못하는 경우가 있어서 기록을 해둔다.


예)

> 0.1 + 0.2;

0.30000000000000004


이런 것은 결합법칙에서 문제가 된다. (A + B ) + C = A + (B + C)

> (0.1 + 0.2) + 0.3;

0.6000000000000001

> 0.1 + (0.2 + 0.3);

0.6

>


돈과 관련된 경우에는 정밀도는 민감한 사항이기 때문에 실수가 아닌 정수형으로 계산을 하라고 한다.

최소 단위를 일의 단위로 이용을 한다면 문제가 없다.

> (1 + 2) + 3;

6

> 1 + (2 + 3);

6

> ((1 + 2) + 3)/10;

0.6

> (1 + (2 + 3))/10;

0.6