📜  Java中double和float原始类型的比较

📅  最后修改于: 2022-05-13 01:55:38.767000             🧑  作者: Mango

Java中double和float原始类型的比较

考虑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

第一个示例的输出为真,第二个示例的输出为假。我们知道 float 和 double 的精度是不同的。浮点数的尾数大小为 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 中变得不同。