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


在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 类型创建对象,并且建议使用字符串创建,因为在看起来数字相等的情况下,使用字符串的精度更高。
在这里插入图片描述
在这里插入图片描述

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");
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bruin_du

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值