Java double和float原始类型的比较

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,double是53。

让我们考虑第一个例子:5.25。积分部分的二进制表示是101,点的部分的二进制表示是0.01(只需要两个比特)。

让我们考虑第二个例子5.1。积分部分的二进制表示法是相同的。但是0.1的二进制表示是1/16+1/32+1/64+1/128…..,以此类推,直到我们到达尾数的终点或总和超过0.1。在这种情况下,我们到达尾数的末端,因此5.1的值在浮点数和double中变得不同。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程