isnan
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Definido en el encabezado
<math.h>
|
||
|
#define isnan(arg) /* implementation defined */
|
(desde C99) | |
Determina si el número de punto flotante dado arg es un valor no-numérico (NaN). La macro devuelve un valor integral.
FLT_EVAL_METHOD se ignora: incluso si el argumento se evalúa con más rango y precisión que su tipo, primero se convierte a su tipo semántico, y la clasificación se basa en eso (esto importa si el tipo de evaluación admite NaNs, mientras que el tipo semántico no lo hace).
Contenidos |
Parámetros
| arg | - | valor de punto flotante |
Valor de retorno
Valor integral distinto de cero si arg es un NaN, 0 en caso contrario.
Notas
Existen muchos valores NaN diferentes con distintos bits de signo y cargas útiles, consulte nan .
Los valores NaN nunca son iguales a sí mismos ni a otros valores NaN. Copiar un NaN puede cambiar su patrón de bits.
Otra forma de comprobar si un valor de punto flotante es NaN es comparándolo consigo mismo: bool is_nan ( double x ) { return x ! = x ; }
Ejemplo
#include <float.h> #include <math.h> #include <stdio.h> int main(void) { printf("isnan(NAN) = %d\n", isnan(NAN)); printf("isnan(INFINITY) = %d\n", isnan(INFINITY)); printf("isnan(0.0) = %d\n", isnan(0.0)); printf("isnan(DBL_MIN/2.0) = %d\n", isnan(DBL_MIN / 2.0)); printf("isnan(0.0 / 0.0) = %d\n", isnan(0.0 / 0.0)); printf("isnan(Inf - Inf) = %d\n", isnan(INFINITY - INFINITY)); }
Salida posible:
isnan(NAN) = 1 isnan(INFINITY) = 0 isnan(0.0) = 0 isnan(DBL_MIN/2.0) = 0 isnan(0.0 / 0.0) = 1 isnan(Inf - Inf) = 1
Referencias
- Estándar C23 (ISO/IEC 9899:2024):
-
- 7.12.3.4 La macro isnan (p: TBD)
- Estándar C17 (ISO/IEC 9899:2018):
-
- 7.12.3.4 La macro isnan (p: TBD)
- Estándar C11 (ISO/IEC 9899:2011):
-
- 7.12.3.4 The isnan macro (p: 236-237)
- Estándar C99 (ISO/IEC 9899:1999):
-
- 7.12.3.4 La macro isnan (p: 217)
Véase también
|
(C99)
(C99)
(C99)
|
devuelve un NaN (no es un número)
(función) |
|
(C99)
|
clasifica el valor de punto flotante dado
(macro de función) |
|
(C99)
|
verifica si el número dado tiene valor finito
(macro de función) |
|
(C99)
|
verifica si el número dado es infinito
(macro de función) |
|
(C99)
|
verifica si el número dado es normal
(macro de función) |
|
(C99)
|
verifica si dos valores de punto flotante están desordenados
(macro de función) |
|
Documentación de C++
para
isnan
|
|