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位IEEE754浮点,双精度数据类型是双精度64位IEEE754浮点。以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) < margin) {
return true;
}
return false;
}
}输出结果
true true
热门推荐
10 对患者生日祝福语简短
11 结婚祝福语简短装备
12 周岁祝福语学生文案简短
13 订婚领证祝福语简短精辟
14 导师获奖祝福语大全简短
15 新婚购房祝福语简短精辟
16 牛年祝福语简短的爱人
17 送芒果的祝福语简短
18 送给学长毕业祝福语简短