BigDecimal大数运算

       BigDecimal b1 = new BigDecimal("11111111111111111111111111111");
       BigDecimal b2 = new BigDecimal("22222222222222222222222222222");
       BigDecimal b3 = new BigDecimal("1000");
        
       //相加
       System.out.println(b1.add(b2)); 
       //减去
       System.out.println(b1.subtract(b2));
       //相乘
       System.out.println(b1.multiply(b2));
       //相除
       System.out.println(b2.divide(b3));
       System.out.println(b2.divide(b3,1,BigDecimal.ROUND_UP));
       System.out.println(b2.divide(b3,2,BigDecimal.ROUND_DOWN));
       System.out.println(b2.divide(b3,2,BigDecimal.ROUND_CEILING));
       //取余
       System.out.println("remainder:   "+b2.remainder(b3));  
        
       /**
        * divide(BigDecimal divisor, int scale,int roundingMode)    scale:保留小数位数        roundingMode:舍入模式
        * 包括
        *
        * ROUND_UP:舍入远离零的舍入模式。在丢弃非零部分之前始终增加数字。注意,此舍入模式始终不会减少计算值的大小。 (向上增加)
        * ROUND_DOWN:接近零的舍入模式。在丢弃某部分之前始终不增加数字(即截短)。注意,此舍入模式始终不会增加计算值的大小。(向下减少  )
        *
        * ROUND_CEILING:接近正无穷大的舍入模式。如果 BigDecimal 为正,则舍入行为与 ROUND_UP 相同;如果为负,则舍入行为与 ROUND_DOWN 相同。注意,此舍入模式始终不会减少计算值。 (联想到天花板)
        * ROUND_FLOOR:接近负无穷大的舍入模式。如果 BigDecimal 为正,则舍入行为与 ROUND_DOWN 相同;如果为负,则舍入行为与 ROUND_UP 相同。注意,此舍入模式始终不会增加计算值。(联想到地板)
        *
        * ROUND_HALF_UP:向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则为向上舍入的舍入模式。如果舍弃部分 >= 0.5,则舍入行为与 ROUND_UP 相同;否则舍入行为与 ROUND_DOWN 相同。注意,这是我们大多数人在小学时就学过的舍入模式。
        * ROUND_HALF_DOWN:向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则为上舍入的舍入模式。如果舍弃部分 > 0.5,则舍入行为与 ROUND_UP 相同;否则舍入行为与 ROUND_DOWN 相同。
        * ROUND_HALF_EVEN:向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则向相邻的偶数舍入。如果舍弃部分左边的数字为奇数,则舍入行为与 ROUND_HALF_UP 相同;如果为偶数,则舍入行为与 ROUND_HALF_DOWN 相同。注意,在重复进行一系列计算时,此舍入模式可以将累加错误减到最小。
        *
        *
       */
        
       //compareTo     将此 BigDecimal 与指定的 BigDecimal 比较。
       System.out.println("compareTo()  "+b1.compareTo(b2));
        
       //divideAndRemainder
       System.out.println("divideAndRemainder()  "+Arrays.toString(b1.divideAndRemainder(b2)));
        
       //doubleValue()   将此 BigDecimal 转换为 double
       System.out.println(b2.doubleValue());
        
       //max、min、toBigInteger、valueOf、toString、pow、negate

您可能还喜欢...