Java Double比较示例
Double是Java中可用的原始数据类型之一,表示十进制数。它属于浮点类型,也称为实数,在计算需要小数值时使用。例如,表示1/5的结果,即0.2,正弦和余弦的结果也需要小数点。除了表示小数值之外,我们还可以对两个double类型的变量执行比较操作。本文旨在通过示例程序探讨比较double变量的可能方法。
在Java中比较Double
在本节中,我们将解释如何在Java中比较Double。我们可以使用以下方法:
- 使用
==
运算符 -
使用compareTo()方法
-
使用compare()方法
让我们逐个通过示例程序来讨论它们。
使用==
运算符
==
运算符是Java中可用的关系运算符之一。它用于比较两个数据类型的值。更准确地说,它执行相等性测试,即检查给定的值是否相等,如果两个值相等,则返回true,否则返回false。
然而,由于舍入误差,许多Java开发人员不推荐使用等号运算符。舍入误差在使用浮点数时非常常见。因此,当我们使用==
运算符比较double值时,可能会得到错误的结果。
示例
在这个示例中,我们将使用'=='
运算符来比较两个double值。
public class Demo {
public static void main(String[] args) {
double data1 = 0.30;
double data2 = 0.20 + 0.10;
System.out.println("Value after addition: " + data2);
// checking equality of first operation
System.out.println(data1 == data2);
double data3 = 0.50;
double data4 = 0.10 + 0.10 + 0.10 + 0.10 + 0.10;
System.out.println("Value after addition: " + data4);
// checking equality of second operation
System.out.println(data3 == data4);
}
}
输出
Value after addition: 0.30000000000000004
false
Value after addition: 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[]) {
// declaring and initializing two double variable
Double d1 = Double.valueOf(395.24);
Double d2 = Double.valueOf(323.30);
// comparing and storing the result to an int variable
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[]) {
// declaring and initializing two double variable
Double d1 = Double.valueOf("195.24");
Double d2 = Double.valueOf("323.30");
int res = Double.compare(d1, d2);
// comparing and storing the result to an int variable
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()将提供准确的结果。