NaN в C ++ - что это такое и как это проверить?
Что такое NaN?
NaN, аббревиатура от «Not a Number», является исключением, которое обычно возникает в тех случаях, когда выражение приводит к числу, которое невозможно представить. Например, квадратный корень из отрицательных чисел.
// C++ code to demonstrate NaN exception #include<iostream> #include<cmath> // 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?
Метод 1. Использование оператора сравнения («==»).
В этом методе мы проверяем, является ли число сложным, сравнивая его с самим собой. Если результат верен, то число не комплексное, то есть действительное. Но если результат ложный, то возвращается «нан», т.е. число комплексное.
// C++ code to check for NaN exception // using "==" operator #include<iostream> #include<cmath> // 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 ()», эта функция возвращает истину, если число сложное, иначе она возвращает ложь.
// C++ code to check for NaN exception // using "isnan()" #include<iostream> #include<cmath> // 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; } |
Выход:
Это реальное число Его NaN
Автором этой статьи является Манджит Сингх. Если вам нравится GeeksforGeeks и вы хотите внести свой вклад, вы также можете написать статью с помощью метода влиятельности. Посмотрите, как ваша статья появляется на главной странице GeeksforGeeks, и помогите другим гикам.
Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсужденной выше.