构造
1、整型可以传数字或者字符串
2、小数型必须传字符串(不然小数计算不精准)
BigDecimal a=new BigDecimal(100);
BigDecimal b=new BigDecimal(6);
BigDecimal c=new BigDecimal(-6);
比较大小
a<b
a.compareTo(b) == -1
a=b
a.compareTo(b) == 0
a>b
a.compareTo(b) == 1
a>=b
a.compareTo(b) >= 0
a<=b
a.compareTo(b) <= 0
加减乘除
//加法
BigDecimal resAdd = a.add(b);
//减法
BigDecimal resSub = a.subtract(b);
//乘法
BigDecimal resMul = a.multiply(b);
//绝对值
BigDecimal resAbs = c.abs();
/**
* 除法
* (BigDecimal divisor 除数, int scale 精确小数位, int roundingMode 舍入模式)
*/
BigDecimal resDiv = a.divide(b,20,BigDecimal.ROUND_HALF_UP);
舍入模式
1、ROUND_UP
舍入远离零的舍入模式(数值部分向上进位)
2、ROUND_DOWN
接近零的舍入模式(数值部分向下进位)
3、ROUND_CEILING
接近正无穷大的舍入模式(向上进位)
4、ROUND_FLOOR
接近负无穷大的舍入模式(向下进位)
5、ROUND_HALF_UP
向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则为向上舍入的舍入模式(四舍五入)
6、ROUND_HALF_DOWN
向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则为上舍入的舍入模式(五舍六入)
(0.5,舍;大于0.5入)
7、ROUND_HALF_EVEN
向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则向相邻的偶数舍入
8、ROUND_UNNECESSARY
断言请求的操作具有精确的结果,因此不需要舍入
(在保留位,若装不下,则抛异常)