isnan, isnanf, isnanl – проверяют, является ли аргумент не числом (nan).
Синтаксис:
#include < math.h >
int isnan (double x);
int isnanf (float x);
int isnanl (long double x);
Аргументы:
x – проверяемое число с плавающей точкой.
Возвращаемое значение:
0, если проверяемый аргумент – конечное число или бесконечность.
Отличное от нуля значение, если проверяемый аргумент не число (NAN).
Описание:
Функции isnan, isnanf, isnanl проверяют, является ли аргумент не числом (NAN).
Функции isnan, isnanf, isnanl отличаются друг от друга типом аргумента. Так аргумент функции isnan является числом с плавающей точкой двойной точности (тип double, точность не менее десяти значащих десятичных цифр, разрядность - 64).
Аргумент функции isnanf является числом с плавающей точкой (тип float, точность не менее шести значащих десятичных цифр, разрядность - 32).
Аргумент функции isnanl является числом с плавающей точкой повышенной точности (тип long double, точность не менее десяти значащих десятичных цифр, разрядность - 80).
Функции isnan, isnanf, isnanl в ревизии C99 стандарта Си были продублированы макросом isnan, работающим с аргументом, заданным числом с плавающей точкой любого типа (float, double, long double).
Пример:
В примере проверяется три аргумента, один из которых нормальное число, другой не число, а третий плюс бесконечность, с помощью функций isnan, isnanf, isnanl и результат выводится на консоль.
#include < stdio.h > //Для puts
#include < math.h > //Для isnan, isnanf, isnanl
int main (void)
{
// Аргумент 1 – не число.
float arg1 = NAN;
//Аргумент 2 – бесконечность
double arg2 = INFINITY;
//Аргумент 3 – конечное число
long double arg3 = 104.563;
// Выводим на консоль значения аргументов
printf (“Аргументы: %f %f %3Lf\n”,arg1, arg2, arg3);
// Проверяем тип первого аргумента и выводим результат
if (isnanf (arg1) == 0)
puts (“Первый аргумент – конечное число или бесконечность.”);
else
puts (“Первый аргумент – не число.”);
// Проверяем тип второго аргумента и выводим результат
if (isnan(arg2) == 0)
puts (“Второй аргумент – конечное число или бесконечность.”);
else
puts (“Второй аргумент – не число.”);
// Проверяем тип третьего аргумента и выводим результат
if ( isnanl (arg3) == 0)
puts (“Третий аргумент – конечное число или бесконечность.”);
else
puts (“Третий аргумент – не число.”);
return 0;
}
| |
Результат:
Аргументы: nan, inf, 104.563
Первый аргумент – не число.
Второй аргумент – конечное число или бесконечность.
Третий аргумент – конечное число или бесконечность.
|
Смотри так же:
Функции:
finite, finitef, finitel
isinf, isinff, isinfl
isnan,isnanf,isnanl
Макросы:
isfinite
isinf
isnan
isnormal
isunordered
fpclassify
|