我有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
Run Code Online (Sandbox Code Playgroud)
是否有内置方法或更优雅的方法来做到这一点?
我不能使用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);
}
Run Code Online (Sandbox Code Playgroud)
使用此代码,BigDecimal比例小于 2(如"3")的 a 将其比例设置为 2,如果不是,它将保持其当前比例。