BigDecimal乘除法的精度问题

因为项目中涉及到利息计算的问题,所以用到bigdecimal类型:
利息只用到了乘除法,因此我这里只演示乘除法的精度问题:

BigDecimal a = new BigDecimal(1.11);
BigDecimal b = new BigDecimal(2.11);
BigDecimal c = new BigDecimal(3.56);
a = a.divide(b,2,BigDecimal.ROUND_HALF_UP).multiply(c.setScale(2,BigDecimal.ROUND_HALF_UP)).
setScale(2,BigDecimal.ROUND_HALF_UP);
log.info("aaaaaaaaaaaaaaaaaaaaaaaa"+a.toString());

除的时候要设置一次精度,乘的时候也要设置一次精度,但是两次设置精度获得的结果仍然不是小数点后两位的精度,所以为了精确到小数点后两位,仍然要设置精度。

除的时候设置精度:a.divide(b,2,BigDecimal.ROUND_HALF_UP);

乘的时候设置精度:

a.multiply(c.setScale(2,BigDecimal.ROUND_HALF_UP));

结果设置精度:

setScale(2,BigDecimal.ROUND_HALF_UP);

你可能感兴趣的:(java,web项目)