finite, finitef, finitel – проверяют, является ли аргумент конечным числом.
Синтаксис:
#include < math.h >
int finite (double x);
int finitef (float x);
int finitel (long double x);
Аргументы:
x – проверяемое число с плавающей точкой.
Возвращаемое значение:
0 - если аргумент плюс или минус бесконечность или не число (NAN).
Отличное от нуля значение, если проверяемый аргумент – конечное число.
Описание:
Функции finite, finitef, finitel проверяют, является ли аргумент конечным числом, то есть проверяют, что аргумент не плюс/минус бесконечность и не является нечисловым значением (не NAN).
Функции finite, finitef, finitel отличаются друг от друга типом аргумента. Так аргумент функции finite является числом с плавающей точкой двойной точности (тип double, точность не менее десяти значащих десятичных цифр, разрядность - 64).
Аргумент функции finitef является числом с плавающей точкой (тип float, точность не менее шести значащих десятичных цифр, разрядность - 32).
Аргумент функции finitel является числом с плавающей точкой повышенной точности (тип long double, точность не менее десяти значащих десятичных цифр, разрядность - 80).
Функции finite, finitef, finitel в ревизии C99 стандарта Си были продублированы макросом isfinite, работающим с аргументом, заданным числом с плавающей точкой любого типа (float, double, long double).
Пример:
В примере проверяется три аргумента, один из которых нормальное число, другой не число, а третий плюс бесконечность, с помощью функций finite, finitef, finitel и результат выводится на консоль.
#include < stdio.h > //Для printf, puts
#include < math.h > //Для finite, finitef, finitel
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 ( finitef (arg1) == 0)
puts (“Первый аргумент – бесконечность или не число.”);
else
puts (“Первый аргумент – конечное число.”);
// Проверяем тип второго аргумента и выводим результат
if ( finite (arg2) == 0)
puts (“Второй аргумент – бесконечность или не число.”);
else
puts (“Второй аргумент – конечное число.”);
// Проверяем тип третьего аргумента и выводим результат
if ( finitel (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
|