6월, 2014의 게시물 표시

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

[문제] 웹사이트 수정요구를 반영하는 중에 재미있는 현상을 발견 윈도우 계산기 : 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