std::isnan
De cppreference.com
Definido en el archivo de encabezado <cmath> | ||
bool isnan(float arg ); | (1) | (desde C++11) (constexpr since C++23) |
bool isnan(double arg ); | (2) | (desde C++11) (constexpr since C++23) |
bool isnan(longdouble arg ); | (3) | (desde C++11) (constexpr since C++23) |
bool isnan( TipoEntero arg ); | (4) | (desde C++11) (constexpr since C++23) |
1-3) Determina si un número de punto flotante dado
arg
es un valor No es un Número (NaN).4) Un conjunto de sobrecargas o una plantilla de función que acepta el argumento
arg
de cualquier tipo entero. Equivalente a (2) (el argumento se convierte a double). Contenido |
[editar]Parámetros
arg | - | Valor de punto flotante. |
[editar]Valor de retorno
true si arg
es un NaN; false de lo contrario.
[editar]Notas
Hay muchos valores NaN diferentes con bits de signo y cargas útiles diferentes; véase std::nan y std::numeric_limits::quiet_NaN.
Los valores NaN nunca se comparan iguales a sí mismos o a otros valores NaN. No se requiere copiar un NaN, como indica IEEE-754, para preservar su representación de bits (signo y carga útil), aunque la mayoría de las implementaciones lo hacen.
Otra manera de probar si un valor de punto flotante es NaN es compararlo consigo mismo: bool is_nan(double x){return x != x;}
[editar]Ejemplo
Ejecuta este código
#include <iostream>#include <cmath>#include <cfloat> int main(){std::cout<<std::boolalpha<<"isnan(NaN) = "<< std::isnan(NAN)<<'\n'<<"isnan(Inf) = "<< std::isnan(INFINITY)<<'\n'<<"isnan(0.0) = "<< std::isnan(0.0)<<'\n'<<"isnan(DBL_MIN/2.0) = "<< std::isnan(DBL_MIN/2.0)<<'\n'<<"isnan(0.0 / 0.0) = "<< std::isnan(0.0/0.0)<<'\n'<<"isnan(Inf - Inf) = "<< std::isnan(INFINITY-INFINITY)<<'\n';}
Salida:
isnan(NaN) = true isnan(Inf) = false isnan(0.0) = false isnan(DBL_MIN/2.0) = false isnan(0.0 / 0.0) = true isnan(Inf - Inf) = true
[editar]Véase también
(C++11)(C++11)(C++11) | No es un Número (NaN) (función) |
(C++11) | Categoriza el valor de punto flotante dado (función) |
(C++11) | Comprueba si el número dado tiene un valor finito (función) |
(C++11) | Comprueba si el número dado es infinito (función) |
(C++11) | Comprueba si el número dado es normal (función) |
(C++11) | Comprueba si dos valores de punto flotante son no ordenados (función) |
Documentación de C para isnan |