【发布时间】:2012-08-24 11:04:21
【问题描述】:
如果你尝试以下一点,你会得到 -0
<c:set var="demo" value="-0.04" />
<fmt:formatNumber maxFractionDigits="1" value="${demo}" var="demo" />
但如果你测试它是否小于 0 则为真
<c:if test="${demo < 0.00}">...</c:if>
我该如何解决这个问题?这似乎没有意义,0 等于 -0,我已经用代数证明了它......在this post 他们指向 IEEE 参考,但我仍然无法解决问题
编辑:感谢您的评论,代码示例中存在错误。我将四舍五入的值分配给演示变量。而且输出不是0,而是-0,我试过了
【问题讨论】:
-
有什么问题?您已为变量分配了值-0.04,然后将其输出,四舍五入到小数点后一位(将输出 0.0)。然后您测试原始值 -0.04 是否小于 0.00... 这会产生 true。
-
代码有错误,已修复。它不输出0,输出-0
-
乐队名称为“负零”的 Dibs!
-
@ZeroPage negativezero.org
-
@DaveNewton awwww... :-)