BigDecimal的加减乘除/比较大小

BigDecimal的加减乘除/比较大小

BigDecimal的简介

BigDecimal 由任意精度的整数非标度值 和32 位的整数标度 (scale) 组成。如果为零或正数,则标度是小数点后的位数。如果为负数,则将该数的非标度值乘以 10 的负scale 次幂。因此,BigDecimal表示的数值是(unscaledValue × 10-scale)。

BigDecimal的加减乘除

 public static void main(String[] args) {
        BigDecimal b =  new BigDecimal(10.00);
        BigDecimal a =  new BigDecimal(5.00);
        BigDecimal c =  new BigDecimal(5.20);
        BigDecimal d = null;
        //加法
        d = b.add(a);
        System.out.println(d);//15
        d = b.add(c);
        System.out.println(d);//15.20000000000000017763568394002504646778106689453125
        d = b.add(c,MathContext.DECIMAL32);
        System.out.println(d);//15.20000

        //减法
        d = b.subtract(a);
        System.out.println(d);//5
        d = b.subtract(c,MathContext.DECIMAL32);
        System.out.println(d);//4.800000

        //乘法
        d = b.multiply(a);
        System.out.println(d); //50
        d = b.multiply(c,MathContext.DECIMAL32);
        System.out.println(d);//52.00000

        //除法
        d = b.divide(a);
        System.out.println(d); // 2
        d = b.divide(a,MathContext.DECIMAL32);
        System.out.println(d); //2
        d = b.divide(a,2,BigDecimal.ROUND_HALF_UP);//scale:小数点位数
        System.out.println(d); //2.00
    }

除法

BigDecimal.divide(BigDecimal divisor, int scale, RoundingMode roundingMode) ;

  • divisor为除数,不能为零;
  • scale为小数位数;
  • roundingMode为小数模式:
    1 ROUND_UP :进一位
    2 ROUND_DOWN:舍弃
    3 ROUND_HALF_DOWN:舍弃部分> 5,进一位
    4 ROUND_HALF_UP:舍弃部分>=.5,进一位
    5 ROUND_HALF_EVEN:
    如果舍弃部分左边的数字为奇数,则作 ROUND_HALF_UP ;如果它为偶数,则作 ROUND_HALF_DOWN 。
    6 ROUND_CEILING
    如果 BigDecimal 是正的,则做 ROUND_UP 操作;如果为负,则做 ROUND_DOWN 操作。
    7 ROUND_FLOOR
    如果 BigDecimal 为正,则作 ROUND_UP ;如果为负,则作 ROUND_DOWN 。
    8 ROUND_UNNECESSARY
    该“伪舍入模式”实际是指明所要求的操作必须是精确的,,因此不需要舍入操作。
       BigDecimal b =  new BigDecimal(10.00);
       BigDecimal a =  new BigDecimal(5.30);
       BigDecimal d = null;
       d = b.divide(a,MathContext.DECIMAL32);
       System.out.println(d); //1.886792
       d = b.divide(a,2,BigDecimal.ROUND_DOWN);//scale:小数点位数
       System.out.println("ROUND_DOWN:  "+ d); //1.88
         d = b.divide(a,2,BigDecimal.ROUND_UP);//scale:小数点位数
       System.out.println("ROUND_UP:  "+ d); //1.89

比较大小

BigDecimal的compareTo方法比较大小

返回的结果是int类型,-1表示小于,0是等于,1是大于

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值