Проверить, является ли число корректным (NAN)
#include <math.h>#define isnan( x ) ...
libm
Макрос isnan() определяет, является ли x "не числом" (NAN).
#include <stdio.h>#include <stdlib.h>#include <errno.h>#include <inttypes.h>#include <math.h>#include <fpstatus.h>int main( void ){double a, b, c, d;a = 2;b = -0.5;c = NAN;fp_exception_mask( _FP_EXC_DIVZERO, 1 );d = 1.0 / 0.0;printf( "%f is %s \n", a, (isnan( a )) ? "not a number" : "a number" );printf( "%f is %s \n", b, (isnan( b )) ? "not a number" : "a number" );printf( "%f is %s \n", c, (isnan( c )) ? "not a number" : "a number" );printf( "%f is %s \n", d, (isnan( d )) ? "not a number" : "a number" );return (EXIT_SUCCESS);}
Код генерирует следующий вывод:
$ ./a.out 2.000000 is a number -0.500000 is a number NAN is not a number Inf is a number
POSIX 1003.1
Предыдущий раздел: Описание API математической библиотеки