BigDecimal常用API

BigDecimal 在日常开发中比较常用,一些涉及金额的计算及为了确保精度计算都会使用,下面是一些常用的API

1、加法 add

        BigDecimal a = new BigDecimal(999);
        BigDecimal b = new BigDecimal(10000);
        a = a.add(b);
        System.out.println(a.add(b));//10999

2、减法 subtract

		BigDecimal a = new BigDecimal(999);
        BigDecimal b = new BigDecimal(10000);
        a = a.subtract(b);
        System.out.println(a);//-9001

3、乘法 multiply

		BigDecimal a = new BigDecimal(999);
        BigDecimal b = new BigDecimal(10000);
        BigDecimal c = a.multiply(b);
        System.out.println("a*b=" + c);

4、除法 divide

		BigDecimal a = new BigDecimal(999);
        BigDecimal b = new BigDecimal(10000);
        c = a.divide(b);
        System.out.println("a/b=" + c);

5、求余 divideAndRemainder

divideAndRemainder方法会返回一个长度为2的BigDecimal数组,第一个为商,第二个为余数

		BigDecimal a = new BigDecimal(999);
        BigDecimal b = new BigDecimal(10000);
        BigDecimal[] c = a.divideAndRemainder(b);
        System.out.println("a/b=" + c[0] + "余数" + c[1]);

6、比较大小 compareTo

BigDecimal可以通过compareTo方法来进行比较。
返回的结果是int类型,-1表示小于,0是等于,1是大于。

        BigDecimal a = new BigDecimal(999);
        BigDecimal b = new BigDecimal(10000);

        if (a.compareTo(b) > 0) {
            System.out.println("a大于b");
        } else if (a.compareTo(b) == 0) {
            System.out.println("a等于b");
        } else {
            System.out.println("a小于b");
        }

7、处理小数

下面是取舍模式

  • ROUND_UP : 对于正数来说是舍弃小数后,加一,对于负数来说,舍弃小数后减一。例如:100.4,取整数为101,-100.5,取整数为-101
  • ROUND_DOWN : 直接舍弃小数或者说精确位后的小数
  • ROUND_CEILING : 如果 BigDecimal 是正的,则做 ROUND_UP 操作;如果为负,则做 ROUND_DOWN 操作 (取附近较大的整数)。
  • ROUND_FLOOR : 如果 BigDecimal 是正的,则做 ROUND_DOWN 操作;如果为负,则做 ROUND_UP 操作 (取附近较小的整数)。
  • ROUND_HALF_UP : 四舍五入,0.5向上取整 100.5 -> 101
  • ROUND_HALF_DOWN : 四舍五入,0.5向下取整 100.5 -> 100
  • ROUND_UNNECESSARY : 如果存在小数位,就抛ArithmeticException 异常。

单独设置

        BigDecimal a = new BigDecimal("998.5");
        BigDecimal up = a.setScale(0, RoundingMode.UP);
        System.out.println( "up ======= " + up);
        BigDecimal down = a.setScale(0, RoundingMode.DOWN);
        System.out.println( "down ======= " + down);
        //取最近的较大整数
        BigDecimal ceiling = a.setScale(0, RoundingMode.CEILING);
        System.out.println( "ceiling ======= " + ceiling);
        //取最近的较小整数
        BigDecimal floor = a.setScale(0, RoundingMode.FLOOR);
        System.out.println( "floor ======= " + floor);
        //四舍五入,0.5向上取整
        BigDecimal halfUp = a.setScale(0, RoundingMode.HALF_UP);
        System.out.println( "halfUp ======= " + halfUp);
        //四舍五入,0.5向下取整
        BigDecimal halfDown = a.setScale(0, RoundingMode.HALF_DOWN);
        System.out.println( "halfDown ======= " + halfDown);

除法运用

//结果保留两位小数
BigDecimal divide = a.divide(b, 2, RoundingMode.UP);
System.out.println(divide);
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值