2

当除以 1000 时,我有时会遇到一个错误,它不能“正确”地进行除法。例如,当将 90.55 除以 1000 而不是得到 0.09055 时,我得到 0.090549999999。

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

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

为了解决这个问题,我可以将答案四舍五入到 5 位,但这似乎只是一个更深层次问题的补丁。

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

3 回答 3

3

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

于 2009-06-16T15:58:59.000 回答
2

为什么计算机数学不好?

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

于 2009-06-16T15:58:43.087 回答
1

是的,这是一个常见的浮点格式问题。

于 2009-06-16T15:58:08.767 回答