我有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
,因为我希望在存在时保留额外的小数。
答案 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,如果不是,则保持当前规模。