Java中double类型大小比较的五种方法

2年前 (2022) 程序员胖胖胖虎阿
454 0 0

文章目录

    • 1.使用BigDecimal
    • 2.使用包装类Double
    • 3.在误差范围内运行相等
    • 4.转换成字符串
    • 5.使用doubleToLongBits()方法

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

1.使用BigDecimal

//1.使用BigDecimal
String num1 = in.next();
String num2 = in.next();
BigDecimal bdL = new BigDecimal(num1);
BigDecimal bdR = new BigDecimal(num2);
if (bdL.compareTo(bdR) < 0)
	System.out.println("num1 < num2");
else if (bdL.compareTo(bdR) == 0)
	System.out.println("num1 == num2");
else
	System.out.println("num1 > num2");

注意:

BigDecimal可以使用字符串和 double 类型创建对象,并且建议使用字符串创建,因为在看起来数字相等的情况下,使用字符串的精度更高。
Java中double类型大小比较的五种方法
Java中double类型大小比较的五种方法

2.使用包装类Double

//2.使用包装类Double
Double dL = num1;
Double dR = num2;
if (dL.compareTo(dR) < 0)
	System.out.println("num1 < num2");
else if (dL.compareTo(dR) == 0)
	System.out.println("num1 == num2");
else
	System.out.println("num1 > num2");

3.在误差范围内运行相等

//3.两实数的差在允许的范围内认为相等既可认为是相等的
if (num1 - num2 > 0.000001)
    System.out.println("num1 > num2");
else if (num1 - num2 < -0.0000001)
    System.out.println("num1 < num2");
else
    System.out.println("num1 == num2");

4.转换成字符串

可以将double数据转换成string然后借助stringcompareTo方法来间接实现比较两个double数据是否相等。注意这种方法只适用于比较精度相同的数据,并且是只能用于比较正数的大小,负数比较结果异常,不过可以用于比较两数是否相等,此时正负数对结果没有影响。

//4.转换成字符串
String strL = String.valueOf(num1);
String strR = String.valueOf(num2);
if (strL.compareTo(strR) < 0)
    System.out.println("num1 < num2");
else if (strL.compareTo(strR) == 0)
    System.out.println("num1 == num2");
else
    System.out.println("num1 > num2");

5.使用doubleToLongBits()方法

使用sun提供的Double.doubleToLongBits()方法,该方法可以将double转换成long型数据,从而可以使double按照long的方法(<, >, ==)判断是否大小和是否相等,但是,这种办法还是只能用于比较正数,负数结果异常,比较两数相等与否是没有问题的。

//4.使用使用sun提供的Double.doubleToLongBits()方法
long lL = Double.doubleToRawLongBits(num1);
long lR = Double.doubleToRawLongBits(num2);
if (lL < lR)
    System.out.println("num1 < num2");
else if (lL == lR)
    System.out.println("num1 == num2");
else
    System.out.println("num1 > num2");

版权声明:程序员胖胖胖虎阿 发表于 2022年10月31日 下午5:00。
转载请注明:Java中double类型大小比较的五种方法 | 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...