Java 至少有两个小数的BigDecimal

Java 至少有两个小数的BigDecimal,java,bigdecimal,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 有没有内置方法或更优雅的方法来实现这一点 我不能使用,因为我想在小数

我有
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
,您只需检查当前小数点是否大于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,如果不设置,则将保持其当前刻度。

看起来不错。我希望有某种
setMinScale
,但我认为它会成功的。@AlexH是的,它不存在。但是请注意,有一条很短的路径:如果要设置的比例已经是当前的比例,则不会执行任何操作,因此方法调用是无效的。只有当比例小于2时,代码段才会实际执行某些操作。