我在代码中遇到了奇怪的错误.
它涉及到
new BigDecimal("1.2300").stripTrailingZeros()
返回1.23
(正确)
但
new BigDecimal("0.0000").stripTrailingZeros()
返回0.0000
(奇怪),因此没有任何反应
为什么?
怎么解决?
似乎这是一个错误.但它在Java 8中得到修复.修复的直接URL .
有解决方法:
BigDecimal zero = BigDecimal.ZERO; if (someBigDecimal.compareTo(zero) == 0) { someBigDecimal = zero; } else { someBigDecimal = someBigDecimal.stripTrailingZeros(); }
请参阅此链接.
霍尔格在评论中也是一个好点
不要浪费资源创建自己的零实例.使用BigDecimal.ZERO.