BigDecimal stripTrailingZeros无效为零 [英] BigDecimal stripTrailingZeros doesn't work for zero

查看:339
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆