#include <cmath>
#include <iostream>
int main() {
double d1 = 1.0 / 0.0; // 正无穷大
double d2 = 0.0 / 0.0; // NaN
std::cout << std::isnan(d1) << std::endl; // 输出0,即false
std::cout << std::isnan(d2) << std::endl; // 输出1,即true
return 0;
}
在C++中,可以使用std::isnan()函数判断一个double类型的变量是否为NaN(not a number)
此外,也可以使用std::isfinite()函数判断一个double类型的变量是否为有限的,即不是NaN、正无穷大或负无穷大:
#include <cmath>
#include <iostream>
int main() {
double d1 = 1.0 / 0.0; // 正无穷大
double d2 = 0.0 / 0.0; // NaN
double d3 = 1.0; // 有限值
std::cout << std::isfinite(d1) << std::endl; // 输出0,即false
std::cout << std::isfinite(d2) << std::endl; // 输出0,即false
std::cout << std::isfinite(d3) << std::endl; // 输出1,即true
return 0;
}