Поле quiet_NaN
Поле quiet_NaN класса numeric_limits возвращает
так называемое "тихое" значение "не число"
(quiet NaN, от англ. quiet Not-a-Number). Такое значение
представляет собой результат некорректной операции с
плавающей точкой, например деления нуля на ноль, но,
в отличие от сигнального NaN, не вызывает исключения
при использовании в вычислениях. Поле доступно только
для типов с плавающей точкой: float,
double и long double. Для целочисленных
типов поле возвращает 0, а также имеет
значение false в поле has_quiet_NaN.
Синтаксис
#include <limits>
numeric_limits<T>::quiet_NaN
Пример
Давайте получим значение quiet NaN для типа
double и выведем его на экран:
#include <iostream>
#include <limits>
using namespace std;
int main()
{
double nan = numeric_limits<double>::quiet_NaN();
cout << "quiet_NaN: " << nan << endl;
cout << "has_quiet_NaN: "
<< numeric_limits<double>::has_quiet_NaN
<< endl;
return 0;
}
Результат выполнения кода:
"quiet_NaN: nan"
"has_quiet_NaN: 1"
Пример
Давайте проверим, что значение quiet NaN не равно
самому себе, так как любое сравнение с NaN возвращает
false:
#include <iostream>
#include <limits>
using namespace std;
int main()
{
double nan = numeric_limits<double>::quiet_NaN();
if (nan != nan)
{
cout << "nan is not equal to itself" << endl;
}
if (nan == nan)
{
cout << "equal" << endl;
}
else
{
cout << "not equal" << endl;
}
return 0;
}
Результат выполнения кода:
"nan is not equal to itself"
"not equal"
Смотрите также
-
класс
numeric_limits,
который предоставляет информацию о свойствах типов -
поле
infinity,
которое возвращает значение бесконечности -
поле
epsilon,
которое возвращает машинную эпсилон -
поле
is_integer,
которое проверяет, является ли тип целочисленным