bigdecimal除法不四舍五入_BigDecimal除法后保留两位小数

BigDecimal cnt;BigDecimal totalCnt = newBigDecimal(total); cnt = newBigDecimal(

BigDecimal cnt;BigDecimal totalCnt = newBigDecimal(total);

cnt = newBigDecimal(po.getId() * 100);Double d = cnt.divide(totalCnt,2,BigDecimal.ROUND_HALF_UP).doubleValue();

在这里100要先乘以整数,否则放到除完后再*100,则会出现没有保留两位小数的情况;

一些BigDecimal的参考:

BigDecimal.setScale();//用于格式化小数点

setScale(1);//表示保留以为小数,默认用四舍五入方式

setScale(1,BigDecimal.ROUND_DOWN);//直接删除多余的小数位,如2.35会变成2.3

setScale(1,BigDecimal.ROUND_UP);//进位处理,2.35变成2.4

setScale(1,BigDecimal.ROUND_HALF_UP);//四舍五入,2.35变成2.4

setScaler(1,BigDecimal.ROUND_HALF_DOWN);//四舍五入,2.35变成2.3,如果是5则向下舍

1、ROUND_UP

舍入远离零的舍入模式。

在丢弃非零部分之前始终增加数字(始终对非零舍弃部分前面的数字加1)。

注意,此舍入模式始终不会减少计算值的大小。

2、ROUND_DOWN

接近零的舍入模式。

在丢弃某部分之前始终不增加数字(从不对舍弃部分前面的数字加1,即截短)。

注意,此舍入模式始终不会增加计算值的大小。

3、ROUND_CEILI