Java 中 double 和 float 原始类型的比较\n
如果我们比较 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
此逻辑的原理是浮点数和小数的近似值。Float 数据类型是单精度 32 位 IEEE 754 浮点数,而 double 数据类型是双精度 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) < margin) {
return true;
}
return false;
}
}输出
true true
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP