Java Double 比较示例

javaobject oriented programmingprogramming更新于 2024/11/25 5:00:17

Double 是 Java 中可用的原始数据类型之一,表示小数。它属于浮点类型,也称为实数,用于计算需要小数值的情况。例如,为了表示 1/5 即 0.2 的结果,正弦和余弦的结果也需要小数。除了表示小数值外,我们还可以执行两个 double 类型变量之间的比较运算。本文旨在借助示例程序探索比较 double 变量的可能方法。

在 Java 中比较 Double

在本节中,我们将解释如何在 Java 中比较 Double。我们可以使用以下方法 -

  • 使用 == 运算符

  • 使用 compareTo() 方法

  • 使用 compare() 方法

让我们通过示例程序逐一讨论它们。

使用 == 运算符

'==' 运算符是 Java 中可用的关系运算符之一。它用于比较两种数据类型的值。更准确地说,它执行相等测试,这意味着它检查给定的值是否相等,如果两个值相等则返回 true,否则返回 false。

但是,由于舍入误差,许多 Java 开发人员不推荐使用相等运算符。舍入误差非常常见,并且在我们使用浮点数时发生。因此,当我们使用"=="运算符比较双精度值时,我们可能会得到错误的结果。

示例  

在此示例中,我们将使用"=="运算符比较两个双精度值。

public class Demo {
   public static void main(String[] args) {
    double data1 = 0.30;
    double data2 = 0.20 + 0.10;
    System.out.println("相加后的值:" + data2);
    // 检查第一个操作的相等性
    System.out.println(data1 == data2);
    double data3 = 0.50;
    double data4 = 0.10 + 0.10 + 0.10 + 0.10 + 0.10;
    System.out.println("相加后的值:" + data4);
    // 检查第二个操作的相等性
    System.out.println(data3 == data4);
   }
}

输出

相加后的值:0.300000000000000004
false
相加后的值:0.5
true

解释

在上面的代码中,我们执行第一次加法的"data2"的预期值为 0.30,但在输出中我们得到了错误的结果。但是,当我们执行另一个类似的加法时,我们得到了准确的结果,并且通过了相等性测试。因此,不建议使用"=="运算符来比较两个 double 值。

使用 compareTo() 方法

它是"java.lang.Double"类的一种方法,可用于比较两个 Double 值。当第一个对象等于传递的对象时,它返回 0,如果第一个对象更大,则返回正值,否则返回负值。

语法

firstObject.compareTo(secondObject);

示例  

在下面的例子中,我们将初始化两个 Double 变量并使用 compareTo() 方法对它们进行比较。

import java.lang.*;
public class Demo {
   public static void main(String args[]) {
    // 声明并初始化两个 double 变量
    Double d1 = Double.valueOf(395.24);
    Double d2 = Double.valueOf(323.30);
    // 比较并将结果存储到 int 变量中
      int res =  d1.compareTo(d2);
      if(res > 0) { 
         System.out.println("d1 is greater than d2");
      } else if(res < 0) {
         System.out.println("d1 is less than d2");
      } else {
         System.out.println("d1 is equal to d2");
      }
   }
}

输出

d1 is greater than d2

使用 compare() 方法

它是 'java.lang.Double' 类的静态方法。其工作原理也与 compareTo() 方法类似。

示例  

以下示例使用 compare() 方法检查两个 Double 值是否相等。

import java.lang.*;
public class Demo {
   public static void main(String args[]) {
    // 声明并初始化两个 double 变量
    Double d1 = Double.valueOf("195.24");
    Double d2 = Double.valueOf("323.30");
    int res = Double.compare(d1, d2);
    // 比较并将结果存储到 int 变量中
      if(res > 0) {
         System.out.println("d1 is greater than d2");
      } else if(res < 0) {
         System.out.println("d1 is less than d2");
      } else {
         System.out.println("d1 is equal to d2");
      }
   }
}

输出

d1 is less than d2

结论

我们讨论了三种借助程序比较 Double 值的方法。尽量避免使用第一种方法,即使用"=="运算符比较 double 值,因为这可能会因舍入误差而导致错误结果。其他两种内置方法 compare() 和 compareTo() 将为我们提供准确的结果。


相关文章


有用资源