为什么JSP / JSTL除以1000有时会给出余数?

时间:2009-06-16 15:56:24

标签: java jsp floating-point jstl

当除以1000时,我有时遇到一个没有“正确”划分的错误。例如,当将90.55除以1000而不是获得.09055时,我得到.090549999999。

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

为什么会这样?这是浮点数学的结果吗?谷歌搜索似乎表明这可能是罪魁祸首,但我没有找到具体的答案。

为了解决这个问题,我可以将答案四舍五入,但看起来这只是对更深层问题的补丁。

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

3 个答案:

答案 0 :(得分:3)

这不是问题,它只是浮​​点二进制表示的自然结果。围绕你的价值观,不要担心。

答案 1 :(得分:2)

为什么计算机会厌倦数学?

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

答案 2 :(得分:1)

是的,这是一个常见的floating-point format问题。