一、介绍
- float和double类型没有提供完全精确的结果
- BigDecimal用来对超过16位有效位的数进行精确的运算
- extends Number
二、使用
1、常量
BigDecimal.ZERO;
BigDecimal.ONE;
BigDecimal.TEN;
2、构造方法
BigDecimal bd=new BigDecimal(String val);
BigDecimal new BigDecimal(double);
BigDecimal BigDecimal.valueOf(double);
BigDecimal BigDecimal(int val);
BigDecimal(long val);
3、运算
- 加
BigDecimal add(BigDecimal augend);
- 减
BigDecimal subtract(BigDecimal subtrahend);
- 乘
BigDecimal multiply(BigDecimal multiplicand);
- 除
- 分母不能为0,否则
java.lang.ArithmeticException: BigInteger divide by zero
BigDecimal divide(BigDecimal divisor);
BigDecimal divide(BigDecimal divisor, int scale, int roundingMode);
- 绝对值
BigDecimal abs();
- n次方
BigDecimal pow(int exponent);
- 相反数
BigDecimal negate();
- 两者中的小值
BigDecimal a=BigDecimal.valueOf(1.1);
BigDecimal b=BigDecimal.valueOf(3.1);
BigDecimal c=a.min(b);
- 两者中的大值
BigDecimal a=BigDecimal.valueOf(1.1);
BigDecimal b=BigDecimal.valueOf(3.1);
BigDecimal c=a.max(b);
4、比较
int a.compareTo(b);
5、格式化小数点
BigDecimal setScale(int newScale, int roundingMode);
num.setScale(0,RoundingMode.HALF_UP);
num.setScale(0,RoundingMode.UP);
6、转换
int num.intValue();
BigInteger toBigInteger();