由于在java中double类型数据存储的特殊性,在进行商用计算时往往会出现错误的结果,所以不得不用BigDecimal来取代double来进行计算。
在构造Bigdecimal对象时,API提供了double入参,但这是一个陷阱,由double构造的BigDecimal结果也是不可预知的,所以,只能选择用String来构造BigDecimal
BigDecimal bg1 = New BigDecimal(str);
BigDecimal bg2 = New BigDecimal(str);
BigDecimal常用操作
1,加
bg1.add(bg2);
精度为max(bg1.scale(), bg2.scale())
2,减
bg1.subtract(bg2);
精度为max(bg1.scale(), bg2.scale())
3,乘
bg1.multiply(bg2);
精度为maxbg1.scale() + bg2.scale()
4,除以
bg1.divide(bg2, int scale, RoundingMode.HALF_UP)
精度为指定的scale,RoundingMode.HALF_UP为舍入模式
网友评论