目录
二、BigDecimal的加(add)减(subtract)乘(multiply)除(divide)运算
一、BigDecimal 的使用场景
在Java中如果当一个数的大小超过long型范围(能够表示64位的整数)时就可以使用BigDecimal类型。
1.1 BigDecimal的初始化
使用BigDecimal类构造方法传入double类型时,计算的结果也是不精确的。因为不是所有的浮点数都能够被精确的表示成一个double 类型值,有些浮点数值不能够被精确的表示成 double 类型值,因此它会被表示成与它最接近的 double 类型的值。
因此必须改用传入String的构造方法,这一点在BigDecimal类的构造方法注释中有说明。
BigDecimal a = new BigDecimal("0.005");//使用字符串传参
BigDecimal b = new BigDecimal("1000000");
BigDecimal c = new BigDecimal("-1000000");
二、BigDecimal的加(add)减(subtract)乘(multiply)除(divide)运算
使用上述3个已经初始化的BigDecimal对象a,b,c
方法1、BigDecimal result1 = a.add(b);//加法
方法2、BigDecimal result1 = a.add(new BigDecimal("0.005"));
方法1、BigDecimal result2 = a.subtract(b); //减法
方法2、BigDecimal result2 = a.subtract(new BigDecimal("0.005"));
方法1、BigDecimal result3 = a.multiply(b);//乘法
方法2、BigDecimal result3 = a.multiply(new BigDecimal("0.005"));
BigDecimal result4 = a.abs();//绝对值
BigDecimal result5 = a.divide(b,20,BigDecimal.ROUND_HALF_UP); //除法
除法divide()参数使用注意事项:
使用除法函数在divide的时候要设置各种参数,要精确的小数位数和舍入模式,不然会出现报错我们可以看到divide函数配置的参数如下:
即为 (BigDecimal divisor 除数, int scale 保留小数位数, int roundingMode 舍入模式)