📜  C++ STL-math.isnan()函数(1)

📅  最后修改于: 2023-12-03 14:59:45.863000             🧑  作者: Mango

C++ STL - math.isnan()函数

在C++程序中,当我们需要判断一个变量是否为NaN(Not a Number)时,可以使用*math.isnan()*函数来进行判断。该函数属于C++11自带math库中的函数,头文件为

用法

该函数的用法如下:

#include <cmath>

bool isnan (float arg);
bool isnan (double arg);
bool isnan (long double arg);

该函数有三个重载形式:

  • isnan(float arg) : 判断参数是否为浮点数float类型的NaN。
  • isnan(double arg) : 判断参数是否为双精度浮点数double类型的NaN。
  • isnan(long double arg) : 判断参数是否为长双精度浮点数long double类型的NaN。

函数返回值为bool类型,当参数为NaN时,返回true,否则返回false。

示例

以下是一个使用math.isnan()函数的示例:

#include <iostream>
#include <cmath>

int main() {
    double x = 0.0 / 0.0;
    if(std::isnan(x)) {
        std::cout << "x is NaN." << std::endl;
    } else {
        std::cout << "x is not NaN." << std::endl;
    }
    return 0;
}

输出结果:

x is NaN.
注意事项

在使用isnan()函数时,需要特别注意以下几点:

  1. 函数判定浮点数是否为NaN时,仅仅判断NaN这一种情况,不会去判断INF等其它类型的情况,所以不能直接用该函数来判断浮点数是否为有限数。
  2. 如果arg参数为NaN,isnan()函数将返回true;如果arg参数非NaN(即为正常数值),isnan()函数将返回false。
  3. 如果arg参数中包含有无穷大的值,isnan()函数也将返回false。
总结

使用*math.isnan()*函数可以方便快捷地判断浮点数是否为NaN,避免在判断时出现错误。但需要特别注意判断时不会判断其它类型的情况,还需要针对不同情况进行细致判断。