运行这个简单的程序:
public static void main(final String... args)
{
System.out.println(BigDecimal.ZERO.scale());
System.out.println(new BigDecimal("0").scale());
System.out.println(new BigDecimal("0.0").stripTrailingZeros().scale());
System.out.println(new BigDecimal("1.0").stripTrailingZeros().scale());
}
输出:
0
0
1
0
我的问题很简单:为什么第三个println
输出没有0
?这似乎是合乎逻辑的......
编辑:好的,所以,这是一个非常古老的错误:
事实上,它对任意数量的零都“有效”:new BigDecimal("0.0000").stripTrailingZeroes().scale()
是 4!