概述:
BigDecimal 是Java在java.math包中提供的API类,主要是用于金钱等要求高精度数值的计算。
1.转换为BigDecimal 类型
构造方法: BigDecimal bigDecimal = new BigDecimal (参数);
作用:会将括号内的值的类型转换为BigDecimal 类型
括号里面的值可以填以下图片里的类型
BigDecimal bigDecimal = BigDecimal.valueOf();
也能得到BigDecimal 类型的值,但是很明显,这个方法所能接受的参数的类型不如BigDecimal的构造方式的多
2.BigDecimal 的加减乘除
BigDecimal bigDecimal = new BigDecimal(3);
加法 :bigDecimal.add(BigDecimal )
减法:bigDecimal.subtract(BigDecimal )
乘法:bigDecimal.multiply(BigDecimal )
除法:bigDecimal.divide(BigDecimal )
以上括号内的参数都要是BigDecimal 的类型,并且方法的返回值都是Bigdecimal 类型。
注意:BigDecimal 的除法如果是不能整除出现了无限循环小数的时候,会报一个java.lang.ArithmeticException 异常
所以一般在做BigDecimal 除法的时候都会设置对应的小数位数和小数取舍规则,比如说:
bigDecimal.divide(BigDecimal,2,BigDecimal.ROUND_HALF_UP)
其中的数字2表示的是保留2位小数,BigDecimal.ROUND_HALF_UP 表示的是四舍五入。
一般还有以下规则,以1/3为例。
BigDecimal.ROUND_UP
表示的向上取值,无论第三位为什么数都向上进一,结果:0.34
BigDecimal.ROUND_DOWN
表示的不向上取值,无论第三位为什么数都是舍弃,结果:0.33
BigDecimal.ROUND_CEILING
表示的往正数取值,如果得到的结果是正数的话,取值规则按照BigDecimal.ROUND_UP,如果是负数的话取值规则按照BigDecimal.ROUND_DOWN,结果:0.34
BigDecimal.ROUND_HALF_UP
表示的一般是我们熟悉的四舍五入,结果0.33
还有一些舍入规则,这里就不一 一列举了,一般常用的还是BigDecimal.ROUND_HALF_UP
3.BigDecimal 的其他方法
bigDecimal .compareTo(BigDecimal )
作用:BigDecimal 的比较大小,如果是 结果是1的话就是大于,-1的话就是小于,0的话就是等于
bigDecimal .toString()
作用:将bigDecimal 类型的值转换成字符串类型,类似的还有:bigDecimal.doubleValue(), bigDecimal.intValue(), bigDecimal.longValue() 等等