天天看点

BigDecimal类整除报错的解决方案

例如:

金额的数据类型是BigDecimal 

通过BigDecimal的divide方法进行除法时当不整除,出现无限循环小数时,就会抛异常的。

异常如下:

应用场景:一批中供客户的单价是1000元/年,如果按月计算的话1000/12=83.3333333333.... 

解决之道:就是给divide设置精确的小数点divide(xxxxx,2, BigDecimal.ROUND_HALF_EVEN) 

在 java中, 四舍五入通过 BigDecimal 来实现。一定要注意:BigDecimal is Immutable。也就是跟String一样,对前一个的修改,比如setScale(), add()等都会返回一个新的BigDecimal.四舍五入舍入模式是 BigDecimal.ROUND_HALF_UP 

下面贴上一张图:

BigDecimal类整除报错的解决方案

 举例说明: