四则运算 + 绝对值
注意:在使用BigDecimal时我们需要注意它的大部分方法都不会改变原始的值,因为初始化BigDecimal是创建一个了个对象,使用其方法后需要创建BigDecimal去接收新值。
加法: add()函数
BigDecimal num1 = new BigDecimal("1");
BigDecimal num2 = new BigDecimal("1");
BigDecimal result = num1.add(num2);
System.out.println(result);
num1 = num1.add(num2);
System.out.println(num1);
减法: subtract()函数
BigDecimal num1 = new BigDecimal("2");
BigDecimal num2 = new BigDecimal("1");
BigDecimal result = num1.subtract(num2);
System.out.println(result);
num1 = num1.subtract(num2);
System.out.println(num1);
乘法: multiply()函数
BigDecimal num1 = new BigDecimal("2");
BigDecimal num2 = new BigDecimal("3");
BigDecimal result = num1.multiply(num2);
System.out.println(result);
num1 = num1.multiply(num2);
System.out.println(num1);
除法: divide()函数
BigDecimal num1 = new BigDecimal("10");
BigDecimal num2 = new BigDecimal("5");
BigDecimal result = num1.divide(num2);
System.out.println(result);
BigDecimal result = num1.divide(num2, BigDecimal.ROUND_HALF_UP);
System.out.println(result);
BigDecimal result = num1.divide(num2, 2, BigDecimal.ROUND_HALF_UP);
System.out.println(result);
绝对值: abs()函数
BigDecimal num1 = new BigDecimal("1");
BigDecimal result = num1.abs();
System.out.println(result);
BigDecimal num2 = new BigDecimal("-1");
BigDecimal result = num2.abs();
System.out.println(result);
舍入模式
舍入模式时有BigDecimal 常量 和 RoundingMode 枚举,其实两者并无任何区别,使用那种方式都可以。
BigDecimal 常量
- 向上取整 ROUND_DOWN
- 向下取整 ROUND_UP
- 四舍五入 ROUND_HALF_UP
- 五舍六入 ROUND_HALF_DOWN
- 接近正无穷大的舍入 ROUND_CEILING
- 接近负无穷大的舍入 ROUND_FLOOR
- 向最接近的数字舍入 ROUND_HALF_EVEN
- 计算结果是精确的,不需要舍入模式 ROUND_UNNECESSARY
RoundingMode 枚举
- UP(BigDecimal.ROUND_UP)
- DOWN(BigDecimal.ROUND_DOWN)
- CEILING(BigDecimal.ROUND_CEILING)
- FLOOR(BigDecimal.ROUND_FLOOR)
- HALF_UP(BigDecimal.ROUND_HALF_UP)
- HALF_DOWN(BigDecimal.ROUND_HALF_DOWN)
- HALF_EVEN(BigDecimal.ROUND_HALF_EVEN)
- UNNECESSARY(BigDecimal.ROUND_UNNECESSARY)
BigDecimal num1 = new BigDecimal("22.5");
BigDecimal num2 = new BigDecimal("10");
BigDecimal result = num1.divide(num2, BigDecimal.ROUND_UP);
System.out.println(result);
BigDecimal result = num1.divide(num2, BigDecimal.ROUND_DOWN);
System.out.println(result);
BigDecimal result = num1.divide(num2, BigDecimal.ROUND_HALF_UP);
System.out.println(result);
BigDecimal result = num1.divide(num2, BigDecimal.ROUND_HALF_DOWN);
System.out.println(result);