[자바스크립트] 소수점 계산오류가 생길때 해결 방법
[문제]
웹사이트 수정요구를 반영하는 중에 재미있는 현상을 발견
윈도우 계산기 : 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
웹사이트 수정요구를 반영하는 중에 재미있는 현상을 발견
윈도우 계산기 : 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
댓글
댓글 쓰기