我的代码中遇到了奇怪的错误。
它与
new BigDecimal("1.2300").stripTrailingZeros()
returns 1.23
(正确的)
但
new BigDecimal("0.0000").stripTrailingZeros()
returns 0.0000
(奇怪),因此什么也没有发生
Why?
如何修复它?
似乎这是一个bug (JDK-6480539 https://bugs.openjdk.java.net/browse/JDK-6480539)被固定在Java 8(根据 OpenJDK 提交2ee772cda1d6 http://hg.openjdk.java.net/jdk8/jdk8/jdk/rev/2ee772cda1d6).
早期版本 Java 的解决方法:
BigDecimal zero = BigDecimal.ZERO;
if (someBigDecimal.compareTo(zero) == 0) {
someBigDecimal = zero;
} else {
someBigDecimal = someBigDecimal.stripTrailingZeros();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)