BigDecimal,至少有两位小数

时间:2015-12-07 13:35:27

标签: java bigdecimal

我有BigDecimal个值,我想让它们至少有两位小数,但我不想修剪其余的数字。

所以3应该会产生3.00,但3.001应该保留3.001

我知道只需添加0.00

即可实现此目的
new BigDecimal("3").add(new BigDecimal("0.00")) //=> 3.00
new BigDecimal("3.001").add(new BigDecimal("0.00")) //=> 3.001

是否有内置方法或更优雅的方法来执行此操作?

我无法使用setScale,因为我希望在存在时保留额外的小数。

1 个答案:

答案 0 :(得分:4)

实际上,您仍然可以使用setScale,您只需检查当前比例是否大于2:

public static void main(String[] args) {
    BigDecimal bd = new BigDecimal("3.001");

    bd = bd.setScale(Math.max(2, bd.scale()));
    System.out.println(bd);
}

使用此代码,比例低于2的BigDecimal(如"3")将其比例设置为2,如果不是,则保持当前规模。