Java 中双精度和浮点基元类型的比较
考虑 Java 中的以下两个代码:
// This program prints true
class Geeksforgeeks {
public static void main(String args[]) {
float f = 5.25f;
double d = 5.25
System.out.println(f == d);
}
}
输出
true
// But this program prints false.
class Geeksforgeeks {
public static void main(String args[]) {
float f = 5.1f;
double d = 5.1;
System.out.println(f == d);
}
}
输出
false
输出在第一个示例中为真,在第二个示例中为假。我们知道浮点和双精度是不同的。浮点数尾数的大小为 24,双精度为 53。
让我们考虑 5.25 的第一个例子。整数部分的二进制表示为 101,点的一部分的二进制表示为 0.01(只需要两位)
让我们考虑第二个例子 5.1。整数部分的二进制表示是相同的。但是 0.1 的二进制表示是 1/16 + 1/32 + 1/64 + 1/128 …..以此类推,直到我们到达尾数的末尾或者总和变得大于 0.1。在这种情况下,我们到达尾数的末尾,因此 5.1 的值在 float 和 double 中变得不同。
版权属于:月萌API www.moonapi.com,转载请注明出处