NaN в C ++ - что это такое и как это проверить?

Опубликовано: 1 Января, 2022

Что такое 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, и помогите другим гикам.

Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсужденной выше.

Хотите узнать о лучших видео и практических задачах, ознакомьтесь с базовым курсом C ++ для базового и продвинутого уровня C ++ и курсом C ++ STL для базового уровня плюс STL. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .
C++ C