当除以 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}" />
有帮助吗?

解决方案

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

其他提示

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top