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时,代码段才会实际执行某些操作。