至少有两位小数的 BigDecimal

BigDecimal with at least two decimals

我有 BigDecimal 个值,我希望它们至少有两位小数,但我不想 trim 其余的。

所以 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,因为我想保留额外的小数。

其实你还可以用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,如果不是,它将保持其当前比例。