2009-06-16 2 views
2

1000으로 나눌 때 "정확하게"나눗셈을하지 않는 버그를 뛰어 넘는 경우가 있습니다. 예를 들어 .09055를 얻는 대신 90.55를 1000으로 나눌 때 .090549999999가됩니다.1000의 JSP/JSTL 나누기가 때때로 나머지를 제공합니까?

<c:out value="${bean.paPrice/1000}" /> 

왜 이런 일이 발생합니까? 이것은 부동 소수점 연산의 결과입니까? Google 검색에서 이것이 범인 일 수 있음을 나타 냈지만 구체적인 답변을 찾지 못했습니다.

이 문제를 해결하기 위해 5 자리 숫자에 대한 답을 쓸 수 있지만 더 깊은 문제에 대한 패치 일뿐입니다.

<fmt:formatNumber type="number" maxFractionDigits="5" value="${bean.paPrice/1000}" /> 
+0

중복 : http://stackoverflow.com/questions/327544/strange-floating-point-behaviour-in-a-java-program –

+0

참조 http://stackoverflow.com/questions/322749/retain-precision -with-double-in-java –

답변

3

그것은는, 부동 소수점의 이진 표현의 단지 자연적인 결과에 문제가있어이 아니다. 가치를 반올림하고 걱정하지 마십시오.

관련 문제