java float double 区别_Java中的double和float基本类型的比较

如果我们将float和double值与.5或.0或.1235(以5或0结尾)进行比较,则==运算符将返回true,否则将返回false。请参见以下示例。

示例public class Tester {

public static void main(String[] args) {

double d1 = 2.5;

float f1 = 2.5f;

System.out.println(d1 == f1);

double d2 = 2.4;

float f2 = 2.4f;

System.out.println(d2 == f2);

}

}

输出结果true

false

该逻辑背后的原因是浮点数和十进制数的近似值。浮点数据类型是单精度32位IEEE 754浮点,双精度数据类型是双精度64位IEEE 754浮点。以5或0结尾的数字可以用double和float精确表示。

如果使用其他数字,则类似于将0.3333与0.33333333进行比较,后者的精度较高。

比较double和float的正确方法

为了比较double和float,请检查两个之差是否大于或小于特定边距。请参见下面的示例。

示例public class Tester {

public static void main(String[] args) {

double d1 = 2.5;

float f1 = 2.5f;

System.out.println(d1 == f1);

double d2 = 2.4;

float f2 = 2.4f;

double margin = 0.0000001;

System.out.println(compareNumbers(d2, f2, margin));

}

private static boolean compareNumbers(double d, float f, double margin) {

if(Math.abs(d - f) 

return true;

}

return false;

}

}

输出结果true

true

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值