JSP/JSTL 부서가 1000으로 때때로 나머지를 제공하는 이유는 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1002430

  •  05-07-2019
  •  | 
  •  

문제

1000으로 나눌 때 나는 언젠가 "올바르게"부서를 수행하지 않는 버그를 가로 질러 실행됩니다. 예를 들어, .09055를 얻는 대신 90.55를 1000으로 나눌 때 .09054999999를 얻습니다.

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

왜 이런 일이 일어나고 있습니까? 이것은 부동 소수점 수학의 결과입니까? Google 검색에 따르면 이것이 범인 일 수 있지만 구체적인 대답은 찾지 못했습니다.

이것을 고치기 위해 나는 답을 5 자리에 반올림 할 수 있지만 이것은 더 깊은 문제에 대한 패치 일뿐입니다.

<fmt:formatNumber type="number" maxFractionDigits="5" value="${bean.paPrice / 1000}" />
도움이 되었습니까?

해결책

그것은 문제가되지 않습니다. 그것은 부동 소수점의 이진 표현의 자연스러운 결과 일뿐입니다. 당신의 가치를 반올림하고 그것에 대해 걱정하지 마십시오.

다른 팁

컴퓨터가 왜 수학에 빠지는가?

http://www.codinghorror.com/blog/archives/001266.html

예, 이것은 일반적입니다 부동 소수점 형식 문제.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top