Java BigDecimal 的加减乘除运算规则以及比较大小详解
1. add 加法
BigDecimal result = num1.add(num2);
2. subtract 减法
BigDecimal result = num1.subtract(num2);
3. multiply 乘法
BigDecimal result = num1.multiply(num2);
4. divide 除法
BigDecimal result = num2.divide(num1,2,BigDecimal.ROUND_HALF_UP);
num2.divide(BigDecimal num, int scale, RoundingMode roundingMode)
divide参加解析:
scale为小数位数;
roundingMode为小数模式;
ROUND_CEILING
如果 BigDecimal 是正的,则做 ROUND_UP 操作;如果为负,则做 ROUND_DOWN 操作。
ROUND_DOWN
从不在舍弃(即截断)的小数之前增加数字。
ROUND_FLOOR
如果 BigDecimal 为正,则作 ROUND_UP ;如果为负,则作 ROUND_DOWN 。
ROUND_HALF_DOWN
若舍弃部分> .5,则作 ROUND_UP;否则,作 ROUND_DOWN 。
ROUND_HALF_EVEN
如果舍弃部分左边的数字为奇数,则作 ROUND_HALF_UP ;如果它为偶数,则作ROUND_HALF_DOWN 。
ROUND_HALF_UP
若舍弃部分>=.5,则作 ROUND_UP ;否则,作 ROUND_DOWN 。
ROUND_UNNECESSARY
该“伪舍入模式”实际是指明所要求的操作必须是精确的,,因此不需要舍入操作。
ROUND_UP
总是在非 0 舍弃小数(即截断)之前增加数字。
5. abs 绝对值
BigDecimal result = num3.abs();
比较大小
//使用compareTo方法比较
//注意:a、b均不能为null,否则会报空指针
//可与BigDecimal.ZERO比较是否为零再使用compareTo
if(a.compareTo(b) == -1){
System.out.println("a小于b");
}
if(a.compareTo(b) == 0){
System.out.println("a等于b");
}
if(a.compareTo(b) == 1){
System.out.println("a大于b");
}
if(a.compareTo(b) > -1){
System.out.println("a大于等于b");
}
if(a.compareTo(b) < 1){
System.out.println("a小于等于b");
}