BigDecimal 加减乘除 比较大小 setScale(精度处理)

1、运算        
        BigDecimal bignum1 = new BigDecimal("6");
        BigDecimal bignum2 = new BigDecimal("2");
        BigDecimal bignum3 = null;
        
        //加法
        bignum3 =  bignum1.add(bignum2);      
        System.out.println("和 是:" + bignum3);//8
        
        //减法
        bignum3 = bignum1.subtract(bignum2);
        System.out.println("差  是:" + bignum3);//4
        
        //乘法
        bignum3 = bignum1.multiply(bignum2);
        System.out.println("积  是:" + bignum3);//12
        
        //除法
        bignum3 = bignum1.divide(bignum2);
        System.out.println("商  是:" + bignum3);//3

 2、比较 
判断一个BigDecimal的金额是否大于0, 

BigDecimal amt= new BigDecimal("-10"); 

int i=amt.compareTo(BigDecimal.ZERO); 
   if(i==-1){ 
//amt小于0  例如:amt=-10.00 
         } 
   if(i==0){ 
//amt等于0,  amt=0.00 
         } 
   if(i==1){ 
//amt大于0  例如:amt=10.00 
} 

 

 3、精度

BigDecimal b1 = new BigDecimal("33.45666").setScale(2, BigDecimal.ROUND_DOWN); //直接去掉多余的位数
BigDecimal b2 = new BigDecimal("33.45655").setScale(2, BigDecimal.ROUND_UP); //直接进位
BigDecimal b3 = new BigDecimal("33.45655").setScale(2, BigDecimal.ROUND_CEILING); // 天花板(向上),正数进位向上,负数舍位向上
BigDecimal b4 = new BigDecimal("-33.45655").setScale(2, BigDecimal.ROUND_FLOOR); //地板(向下),正数舍位向下,负数进位向下
BigDecimal b5 = new BigDecimal("33.45555").setScale(2, BigDecimal.ROUND_HALF_UP);// 四舍五入(若舍弃部分>=.5,就进位)
BigDecimal b6 = new BigDecimal("33.45555").setScale(2, BigDecimal.ROUND_HALF_DOWN); // 四舍五入(若舍弃部分>.5,就进位)
BigDecimal b7 = new BigDecimal("33.45655").setScale(2, BigDecimal.ROUND_HALF_EVEN);
// 如果舍弃部分左边的数字为偶数,则作 ROUND_HALF_DOWN ;
// 如果舍弃部分左边的数字为奇数,则作 ROUND_HALF_UP

 


 

原文地址:https://www.cnblogs.com/start-fxw/p/10143002.html