JAVA BigDecimal 加、减、乘、除、比较、四舍五入保留小数

代码实例

		BigDecimal one = new BigDecimal(1);
        BigDecimal two = new BigDecimal(2);
        BigDecimal three = new BigDecimal(3);
        //加
        BigDecimal add = one.add(two);
        //减
        BigDecimal subtract = one.subtract(two);
        //乘
        BigDecimal multiply = one.multiply(two);
        //除
        BigDecimal divide = one.divide(two);
        //四舍五入 保留两位小数
        BigDecimal divideScaleTwo = one.divide(three, 2, RoundingMode.HALF_UP);
        //比较
        // 返回 -1 小于
        int oneCompareTwo = one.compareTo(two);
        //返回 0 等于
        int oneCompareOne = one.compareTo(one);
        //返回 1 大于
        int threeCompareOne = three.compareTo(one);

        System.out.println("add=" + add);
        System.out.println("subtract=" + subtract);
        System.out.println("multiply=" + multiply);
        System.out.println("divide=" + divide);
        System.out.println("divideScaleTwo=" + divideScaleTwo);
        System.out.println("oneCompareTwo=" + oneCompareTwo);
        System.out.println("oneCompareOne=" + oneCompareOne);
        System.out.println("threeCompareOne=" + threeCompareOne);

打印结果

add=3
subtract=-1
multiply=2
divide=0.5
divideScaleTwo=0.33
oneCompareTwo=-1
oneCompareOne=0
threeCompareOne=1

RoundingMode模式说明

  1. RoundingMode.UP 正数向大靠,负数向小靠
  2. RoundingMode.DOWN 正数向小靠,负数向大靠
  3. RoundingMode.CEILING 正负都向大靠
  4. RoundingMode.FLOOR 正负都向小靠
  5. RoundingMode.HALF_UP 四舍五入
  6. RoundingMode.HALF_DOWN 五舍六入
  7. RoundingMode.HALF_EVEN
  8. RoundingMode.UNNECESSARY

BigDecimal 常见异常

BigDecimal exception = one.divide(three).setScale(2, RoundingMode.HALF_DOWN);

异常信息

// 对无限循环小数保留位数导致异常
java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.

解决方法

BigDecimal exception = one.divide(three, 2, RoundingMode.HALF_DOWN);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值