[자바스크립트] 소수점 계산오류가 생길때 해결 방법

[문제]
웹사이트 수정요구를 반영하는 중에 재미있는 현상을 발견

윈도우 계산기 : 214500 / 1.1 = 195000 -- 정답
네이버 계산기 : 214500 / 1.1 = 194999.99999999997
자바스크립트 : 214500 / 1.1 = 194999.99999999997

[해결]
부동소수점 연산의 오류도 생각되는데...
Math.floor 와 toFixed 를 사용하여 해결함

10단위 절사의 예
Math.floor(((parseInt(val) / (1.1)).toFixed(0))/10)*10;

=====================================================

1.23 * 99070

위와 같은 식을 계산하면 결과 값이

121856.1 이라는 결과가 나온다.

하지만 자바스크립트로 계산할 경우 아래와 같은 이상한 결과 값이 나온다.

121856.09999999999


자세한 원인은 잘 모르겠지만, 아무 숫자형에 관련되어 있는 것 같다.

parseFloat(1.23 * 99070).toFixed(2)


float 형태로 변환해 준 다음 표현할 소수점 아래 자리수를 적어주면

결과값이 올바르게나온다.

121856.10

댓글

이 블로그의 인기 게시물

[ASP] ASP에서 오라클 DB연결 문의 - Microsoft OLE DB Provider for Oracle error '80004005'

db2 user 생성 및 권한 설정