반올림시 부동소수점 연산 오류 해결방법 > IT 기술백서

IT 기술백서

직접 알아내거나 검색하기 귀찮아서 모아 둔 것

JavaScript | 반올림시 부동소수점 연산 오류 해결방법

본문

0.25375 를 소수점 4자리로 만들어야 했다.
 
const num = Math.round(0.25375 * 10000) / 10000
 
이렇게 해서 기대하는 결과는 0.2538 이었다.
 
그런데 0.2537 이 나온다.
 
이게 무슨일인가 싶어 크롬 개발자도구에 곱하기 연산만 해보았다.
 
 1.PNG
????  뭐지?
 
검색해 보니 자바스크립트는 IEEE 에서 제정한 부동소수점 표현방식 IEE754문제로 소수점연산에 문제가 발생한다고 한다.

다시 검색해서 해결방법을 찾았다. 아래와 같다.

(0.25375 + Number.EPSILON) * 10000

Number.EPSILON 의 값은  2.220446049250313e-16 인데 이것이 무엇인지는 나중에 좀 더 알아봐야겠다.  시간이 없어 ㅜㅜ
 
다행히 결과는 잘 나온다.
 

1.PNG

 

댓글 0개

등록된 댓글이 없습니다.

Menu