澄清BigDecimal.stripTrailingZeroes()的行为

时间:2011-03-08 22:26:28

标签: java bigdecimal

为什么以下代码会打印0.00而不是0

BigDecimal big = new BigDecimal("0.00");
big = big.stripTrailingZeros();
System.out.println(big.toPlainString());

以下是stripTrailingZeroes的文档:

返回BigDecimal,它在数值上等于此值,但从表示中删除了任何尾随零。例如,从BigDecimal值600.0剥离尾随零,其中[BigInteger,scale]组件等于[6000,1],产生6E2,[BigInteger,scale]组件等于[6,-2]

返回:
数字上相等的BigDecimal,删除了任何尾随零。

2 个答案:

答案 0 :(得分:5)

答案 1 :(得分:0)

它会删除内部表示[6000,1]的尾随零,并相应地调整比例1 -> -2。内部表示也有点独立于最终打印输出,这也受格式,舍入和区域设置的影响。