用一段代码检测两个 double 型的x和y是否相等。代码应能 分辨这两个数是否是无穷大或 NaN。如果它们相等,代码都能正确 显示这两个数。
时间: 2023-07-15 17:12:58 浏览: 128
可以 C++ 标准库中的 `isnan()` 和 `isinf()` 函数来判断数值是否为 NaN 或无穷大,然后再分别判断两个数是否相等。下面是一段示例代码:
```c++
#include <iostream>
#include <cmath>
using namespace std;
bool isEqual(double x, double y) {
if (isnan(x) || isnan(y)) { // 判断是否为 NaN
return false;
}
if (isinf(x) || isinf(y)) { // 判断是否为无穷大
return false;
}
return fabs(x - y) < 1e-9; // 判断是否相等
}
int main() {
double a = 1.0 / 0.0; // 无穷大
double b = 0.0 / 0.0; // NaN
double c = 1.0;
double d = 1.0;
cout << "a == a: " << isEqual(a, a) << endl; // 1
cout << "a == b: " << isEqual(a, b) << endl; // 0
cout << "c == d: " << isEqual(c, d) << endl; // 1
return 0;
}
```
输出结果为:
```
a == a: 1
a == b: 0
c == d: 1
```
阅读全文