BigDecimal stripTrailingZeros无效为零 [英] BigDecimal stripTrailingZeros doesn't work for zero
本文介绍了BigDecimal stripTrailingZeros无效为零的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在代码中遇到了一个奇怪的错误.
I have met strange bug in my code.
与
new BigDecimal("1.2300").stripTrailingZeros()
返回1.23
(正确)
但是
new BigDecimal("0.0000").stripTrailingZeros()
返回0.0000
(奇怪),因此什么也没发生
returns 0.0000
(strange), thus nothing happens
为什么?
如何解决?
推荐答案
似乎是 bug .但是它已在 Java 8 中修复. 修复的直接URL.
Seems that it is a bug. But it is fixed in Java 8. Direct URL for fix.
有解决方法:
BigDecimal zero = BigDecimal.ZERO;
if (someBigDecimal.compareTo(zero) == 0) {
someBigDecimal = zero;
} else {
someBigDecimal = someBigDecimal.stripTrailingZeros();
}
请参考此链接.
在评论中 Holger 的另一个好处
不要浪费资源来创建自己的零实例.使用 BigDecimal.ZERO .
这篇关于BigDecimal stripTrailingZeros无效为零的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文