概述
Java运算如何确保精度(BigDecimal)
在Java中使用浮点型数字进行运算,可能会出现误差等问题,为提高算数精度,避免计算误差,我们采用BigDecimal类加以描述。
BigDecimal类的含义为:不可变的,任意精度的带符号十进制数。
BigDecimal的高精度的原理:浮点型数值运算时发生精度丢失的原因是,在二进制存储中,正数部分其存储单元并非相连的,而是随着数值的增大,存储位置也在变大,这样在整数运算中由于二进制占有的部分的增多,就会导致其出现运算误差,但如果将其小数部分转换成整数,通过整数进行运算,其占用存储空间又会变为整数的存储,这样连续的存储单元在运算时不会发生精度丢失。
简单来说就是:既然浮点数会发生精度丢失,但整数不会,那BigDecimal类就将浮点数转换成整数,进行运算,防止了精度丢失的情况。
BigDecimal类运算的方式是通过创建BigDecimal对象的方式,将数转换成BigDecimal对象(Sting类型的数可以不用通过包装类转换成数值的形式,可以直接使用),再通过调用BigDecimal类中的方法来实现算术,比例操作,舍入,比较,散列和格式转换的操作,从而实现保证精度的目的。
下面我们来介绍一些BigDecimal类中的常用方法。
常用构造方法:
//输入String类型的值,将String类型的值转换成BigDecimal类型。
public BigDecimal(String val){}
常用的算数方法如下:
1、求平均值:
public BigDecimal abs()
BigDecimal b1 = new BigDecimal("-13.14");
BigDecimal b2 = b1.abs();
2、加法运算
public BigDecimal add(BigDecimal aug)
BigDecimal b1 = new BigDecimal("13.14");
BigDecimal b2 = new BigDecimal("5.20");
//通过调用BigDecimal中的add方法,参数必须为BigDecimal类型的方法
BigDecimal b3 = b1.add(b2);
3、减法运算
public BigDecimal subtract(BigDecimal aug)
BigDecimal b1 = new BigDecimal("13.14");
BigDecimal b2 = new BigDecimal("5.20");
//通过调用BigDecimal中的subtract方法,参数必须为BigDecimal类型的方法
BigDecimal b3 = b1.subtract(b2);
4、乘法运算
public BigDecimal multiply(BigDecimal aug)
BigDecimal b1 = new BigDecimal("13.14");
BigDecimal b2 = new BigDecimal("5.20");
//通过调用BigDecimal中的multiply方法,参数必须为BigDecimal类型的方法
BigDecimal b3 = b1.multiply(b2);
5、除法运算
public BigDecimal divide(BigDecimal aug)
BigDecimal b1 = new BigDecimal("13.14");
BigDecimal b2 = new BigDecimal("5.20");
//通过调用BigDecimal中的divide方法,参数必须为BigDecimal类型的方法
BigDecimal b3 = b1.divide(b2);
6、比较
public int compareTo(BigDecimal x)
BigDecimal b1 = new BigDecimal("13.14");
BigDecimal b2 = new BigDecimal("5.20");
//通过调用BigDecimal中的divide方法,参数必须为BigDecimal类型的方法
BigDecimal b3 = b1.compareTo(b2);
//b1>b2 返回-1
//b1<b2 返回1
//b1==b2 返回0
BigDecimal类中的方法只能通过方法来进行运算和比较,不可以通过运算符进行运算和比较,所以在对精准度高的领域使用该方法可能造成消耗内存换取精准度的结果
最后
以上就是甜蜜钥匙为你收集整理的Java运算如何确保精度(BigDecimal)的全部内容,希望文章能够帮你解决Java运算如何确保精度(BigDecimal)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复