java - 为什么 JSP/JSTL 除以 1000 有时会得到余数?

标签 java jsp floating-point jstl

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

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

为什么会发生这种情况?这是 float 学的结果吗?谷歌搜索似乎表明这可能是罪魁祸首,但我没有找到具体的答案。

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

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

最佳答案

这不是问题,这只是 float 二进制表示的自然结果。圆整你的值(value)观,不用担心。

关于java - 为什么 JSP/JSTL 除以 1000 有时会得到余数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1002430/

相关文章:

java - 此服务器上没有匹配的上下文

javascript - Uncaught ReferenceError - 找不到函数

c - 查找不能表示为 IEEE-754 32 位 float 的最小整数

java - 如何使用大写字段名称将字符串序列化为对象?

java - 如何在Cloud Firestore中仅在第一笔交易成功后才进行另一笔交易?

java - 如果键是非标准对象,JSF 中的 HashMap 不会显示值

c++ - double 值的不精确性是否保证在同一台机器上是一致的?

JavaScript 数学给出了完全错误的结果

java - GWT 谷歌可视化中带有注释文本的 ComboChart

java - Spring Boot LDAP 组和受限端点