[JAVA] java中BigDecimal类型的使用
java中BigDecimal类型的使用
一、说明:
BigDecimal属于java.math包,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数。
在实际应用中,需要对更大或者更小的数进行运算和处理。
float和double只能用来做科学计算或者是工程计算,在商业计算中(如金融行业)要用java.math.BigDecimal。
BigDecimal所创建的是对象,我们不能使用传统的+、-、*、/等算术运算符直接对其对象进行数学运算,而必须调用其相
对应的方法。
方法中的参数也必须是BigDecimal的对象。构造器是类的特殊方法,专门用来创建对象,特别是带有参数的对象。
二、初始化:
1、构造函数
public BigDecimal(int val)int类型的值生成BigDecimal对象
public BigDecimal(long val) long类型的值生成BigDecimal对象
public BigDecimal(String val) String类型的值转换为BigDecimal类型
2、静态方法
public static BigDecimal valueOf(double val) double类型的值转换为BigDecimal类型
public static BigDecimal valueOf(long val) long类型(包含int类型)的值转换为BigDecimal类型
注意:不建议使用public BigDecimal(double val)方式初始化值
通常建议优先使用String构造方法。当double必须用作BigDecimal的源时,请使用Double.toString(double)转成String,
然后使用String构造方法,或使用BigDecimal的静态方法valueOf:
三、计算
加法public BigDecimal add(BigDecimal value)
减法 public BigDecimal subtract(BigDecimal value)
乘法 public BigDecimal multiply(BigDecimal value)
除法public BigDecimal divide(BigDecimal value)
加法 public BigDecimal add(BigDecimal value) 减法 public BigDecimal subtract(BigDecimal value) 乘法 public BigDecimal multiply(BigDecimal value) 除法 public BigDecimal divide(BigDecimal value)
四、保留位数的方法
使用setScale(int newScale, int roundingMode)方法
1、ROUND_DOWN舍弃多余位数,如1.55会格式化为1.5,-1.55会格式化为-1.5
2、ROUND_UP 进位处理,如1.52会格式化为1.6,-1.52会格式化为-1.6
3、ROUND_HALF_UP 四舍五入,如果舍弃部分>= .5,则进位
4、ROUND_HALF_DOWN 五舍六入,如果舍弃部分> .5,则进位
5、ROUND_CEILING 正无穷大方向舍入模式。如果值为正数,则与ROUND_UP模式相同;如果值为负数,
则与ROUND_DOWN模式相同
6、ROUND_FLOOR 负无穷大方向舍入模式。如果值为正数,则与ROUND_DOWN模式相同;如果值为负数,
则与ROUND_UP模式相同
7、ROUND_UNNECESSARY 确认值的小数位数是否与传入第一个参数(保留小数的位数)相等,如果符合则返回值
,如果不符抛出异常
8、ROUND_HALF_EVEN如果舍弃部门左边的数字为奇数,则与ROUND_HALF_UP模式相同,
如果为偶数则与ROUND_HALF_DOWN模式相同
五、比较大小
使用compareTo(BigDecimal val)方法
a.compareTo(b)
1.a>b 返回1
2.a=b 返回0
3.a<b 返回-1
六、其他方法:
1、BigDecimal.ZERO常量初始化一个为0的BigDecimal对象
2、BigDecimal.ONE 常量 初始化一个为1的BigDecimal对象
3、BigDecimal.TEN 常量 初始化一个为10的BigDecimal对象
4、public BigDecimal abs() 方法 求绝对值,不管正数还是负数,都得到正数
5、public BigDecimal negate() 方法 求相反数,正变负,负变正
6、public BigDecimal pow(int n) 方法 求乘方,如BigDecimal.valueOf(2).pow(3)的值为8
7、public BigDecimal max(BigDecimal val) 方法 两值比较,返回最大值
8、public BigDecimal min(BigDecimal val)方法两值比较,返回最小值
参考文档: