概述:
java.math.BigDecimal 类表示超大的小数,并且可以解决小数运算的问题
构造方法:
BigDecimal(double val) 将 double 转换为 BigDecimal
或者是 double 的二进制浮点值准确的十进制表示形式。
BigDecimal(String val) 将 BigDecimal 的字符串表示形式转换为 BigDecimal。
成员方法:
BigDecimal add(BigDecimal augend)
返回一个 BigDecimal,其值为 (this + augend)
BigDecimal subtract(BigDecimal subtrahend)
返回一个 BigDecimal,其值为 (this - subtrahend)
BigDecimal multiply(BigDecimal multiplicand)
返回一个 BigDecimal,其值为(this × multiplicand)
BigDecimal divide(BigDecimal divisor)
返回一个 BigDecimal,其值为 (this / divisor)
注意:divide方法除不尽
会报错,java.lang.ArithmeticException异常
需要调用另一个方法(重载)
BigDecimal divide(BigDecimal divisor, int scale, RoundingMode roundingMode)
返回一个 BigDecimal,其值为 (this / divisor)
参数1 divisor:除数对应的BigDecimal对象
参数2 scale:精确到位数
参数3 roundingMode:RoundingMode枚举:RoundingMode.HALF_UP 四舍五入
成员方法演示:
// 加法运算
BigDecimal b1 = new BigDecimal("0.09");
BigDecimal b2 = new BigDecimal("0.01");
BigDecimal r1 = b1.add(b2);
System.out.println(r1);
// 减法运算
BigDecimal b3 = new BigDecimal("1.0");
BigDecimal b4 = new BigDecimal("0.32");
BigDecimal r2 = b3.subtract(b4);
System.out.println(r2);
// 乘法运算
BigDecimal r3= b1.multiply(b2);
System.out.println(r3);
// 除法运算
BigDecimal b5 = new BigDecimal("1.301");
BigDecimal b6 = new BigDecimal("100");
BigDecimal r4 = b5.divide(b6);
System.out.println(r4);
// 有问题的除法运算
BigDecimal b7 = new BigDecimal("10");
BigDecimal b8 = new BigDecimal("3");
BigDecimal r5 = b7.divide(b8,5, RoundingMode.HALF_UP);
System.out.println(r5);
10除以3除不尽,调用的另一个方法(重载divide)