用一段代码检测两个double型的x和y是否相等。代码应能分辨这两个数是否是无穷大或NaN。如果它们相等,代码都能正确显示这两个数。使用java代码
时间: 2024-02-13 20:00:24 浏览: 59
Java中的NAN和INFINITY
可以使用Double类提供的静态方法Double.compare() 来比较两个double数值是否相等,并且能够分辨无穷大和NaN。
代码如下:
```java
public static boolean isEqual(double x, double y) {
if(Double.isNaN(x) || Double.isNaN(y)) {
return false; // 如果其中一个是NaN,返回false
} else if(Double.isInfinite(x) && Double.isInfinite(y)) {
return x == y; // 如果两个数都是无穷大,使用 == 判断
} else {
return Double.compare(x, y) == 0; // 其他情况使用 Double.compare() 方法比较
}
}
```
在这个代码中,首先使用 Double.isNaN() 判断两个数是否存在 NaN,如果存在,直接返回 false。然后判断两个数是否都是无穷大,如果是,使用 == 运算符比较。最后,如果两个数都不是 NaN 或无穷大,则使用 Double.compare() 方法比较它们是否相等。如果相等,返回 true,否则返回 false。
阅读全文