为什么 JSP/JSTL 除以 1000 有时会得到余数?
-
05-07-2019 - |
题
当除以 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}" />
解决方案
这不是问题,这只是浮点数二进制表示的自然结果。围绕你的价值观,不要担心。
其他提示
是的,这是一个常见的浮点格式问题。
不隶属于 StackOverflow