📜  C++中的NaN –它是什么以及如何检查?

📅  最后修改于: 2021-05-30 07:47:33             🧑  作者: Mango

什么是NaN?
NaN,“非数字”的首字母缩写是一个例外,通常在表达式导致无法表示的数字的情况下发生。例如负数的平方根。

// C++ code to demonstrate NaN exception
#include
#include // for sqrt()
using namespace std;
int main()
{
    float a = 2, b = -2;
  
    // Prints the number (1.41421)
    cout << sqrt(a) << endl;
  
    // Prints "nan" exception
    // sqrt(-2) is complex number
    cout << sqrt(b) << endl;
  
    return 0;
}

输出:

1.41421
-nan

如何检查NaN?

方法1:使用compare(“ ==”)运算符。
在这种方法中,我们通过将数字与自身进行比较来检查数字是否复杂。如果结果为真,则该数字并不复杂,即为实数。但是,如果结果为假,则返回“ nan”,即数字复杂。

// C++ code to check for NaN exception
// using "==" operator
#include
#include // for sqrt()
using namespace std;
int main()
{
    float a = sqrt(2);
    float b = sqrt(-2);
  
    // Returns true, a is real number
    // prints "Its a real number"
    a==a? cout << "Its a real number" << endl:
          cout << "Its NaN" << endl;
  
    // Returns false, b is complex number
    // prints "Its nan"
    b==b? cout << "Its a real number" << endl:
          cout << "Its NaN" << endl;
  
    return 0;
  
}

输出:

Its a real number
Its NaN


方法2:使用内置函数“ isnan()”。

检查NaN的另一种方法是使用“ isnan()”函数,如果数字是复数,则此函数返回true,否则返回false。

// C++ code to check for NaN exception
// using "isnan()" 
#include
#include // for sqrt() and isnan()
using namespace std;
int main()
{
    float a = sqrt(2);
    float b = sqrt(-2);
      
    // Returns false as a 
    // is real number
    isnan(a)? cout << "Its NaN" << endl:
              cout << "Its a real number" << endl;
      
    // Returns true as b is  NaN
    isnan(b)? cout << "Its NaN" << endl:
              cout << "Its a real number" << endl;
      
    return 0;    
}

输出:

Its a real number
Its NaN
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”