JAVA基础--DOUBLE类型是否相等的判断方法

在Java中int类型数据的大小比较可以使用双等号double类型不能使用双等号来比较大小,如果使用的话得到的结果将永远是不相等,即使两者的精度是相同的也不可以。下面介绍两种比较double数据是否相等的方法。

第一种方法:转换成字符串

        如果要比较的两个double数据的字符串精度相等,可以将数据转换成string然后借助string的equals方法来间接实现比较两个double数据是否相等。

注意:这种方法只适用于比较精度相同的数据,并且是只用用于比较是否相等的情况下,不能用来判断大小。

Float.toString(453.2348f).equals(Float.toString(0.342f))
 
Double.toString(0.8456d).equals(Float.toString(0.242f))

第二种方法:使用SUN提供的DOUBLE.DOUBLETOLONGBITS()方法

该方法可以将double转换成long型数据,从而可以使double按照long的方法(<, >, ==)判断是否大小和是否相等。

Double.doubleToLongBits(0.01) == Double.doubleToLongBits(0.01) 
Double.doubleToLongBits(0.02) > Double.doubleToLongBits(0.01) 
Double.doubleToLongBits(0.02) < Double.doubleToLongBits(0.01)

第三种方法:

对于double类型,比如double d1=0.0000001,double d2=0d 当判断两个数据d1和d2是否相等的时候,一般不直接使用

if(d1==d2)

第四种办法

double a = 0.001; 
double b = 0.0011; 
BigDecimal data1 = new BigDecimal(a); 
BigDecimal data2 = new BigDecimal(b); 
data1.compareTo(data2) 
非整型数,运算由于精度问题,可能会有误差,建议使用BigDecimal类型!

-------------------------------------以下无正文-----------------------------------------------------------

注:仅供学习,记录问题和参考,共勉!

猜你喜欢

转载自blog.csdn.net/qq_39715000/article/details/126197433