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

0.25375 를 소수점 4자리로 만들어야 했다.
 
const num = Math.round(0.25375 * 10000) / 10000
 
이렇게 해서 기대하는 결과는 0.2538 이었다.
 
그런데 0.2537 이 나온다.
 
이게 무슨일인가 싶어 크롬 개발자도구에 곱하기 연산만 해보았다.
 
 

반올림시 >” class=”wp-image” sizes=”(max-width: 1024px) 100vw, 1024px”></figure>
</div>
<div>????  뭐지?</div>
<div> </div>
<div>검색해 보니 자바스크립트는 IEEE 에서 제정한 부동소수점 표현방식 IEE754문제로 소수점연산에 문제가 발생한다고 한다.</div>
<div></div>
<div>다시 검색해서 해결방법을 찾았다. 아래와 같다.</div>
<div></div>
<div>(0.25375 + <b>Number.EPSILON</b>) * 10000</div>
<div></div>
<div>Number.EPSILON 의 값은  2.220446049250313e-16 인데 이것이 무엇인지는 나중에 좀 더 알아봐야겠다.  시간이 없어 ㅜㅜ</div>
<div> </div>
<div>다행히 결과는 잘 나온다.</div>
<div> </div>
<div>
<p><figure class=부동소수점 연산

 

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤