一尘不染

为什么JSP / JSTL除以1000有时会产生余数?

jsp

除以1000时,有时会遇到无法“正确”进行除法的错误。例如,当将90.55除以1000而不是得到.09055时,我得到.090549999999。

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

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

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

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

阅读 285

收藏
2020-06-08

共1个答案

一尘不染

这不是问题,这只是浮点数的二进制表示形式的自然结果。四舍五入,不用担心。

2020-06-08