FP_NORMAL, FP_SUBNORMAL, FP_ZERO, FP_INFINITE, FP_NAN
De cppreference.com
Definido en el archivo de encabezado <cmath> | ||
#define FP_NORMAL /*definido por la implementación*/ | (desde C++11) | |
#define FP_SUBNORMAL /*definido por la implementación*/ | (desde C++11) | |
#define FP_ZERO /*definido por la implementación*/ | (desde C++11) | |
#define FP_INFINITE /*definido por la implementación*/ | (desde C++11) | |
#define FP_NAN /*definido por la implementación*/ | (desde C++11) | |
Cada una de las macros FP_NORMAL
, FP_SUBNORMAL
, FP_ZERO
, FP_INFINITE
, FP_NAN
representan una categoría distinta de números de punto flotante. Todas se expanden a una expresión constante entera.
Constante | Explicación |
FP_NORMAL | Indica que el valor es normal, es decir, no infinito, subnormal, no es un número o cero. |
FP_SUBNORMAL | Indica que el valor es subnormal. |
FP_ZERO | Indica que el valor es cero positivo o negativo. |
FP_INFINITE | Indica que el valor no es representable por el tipo subyacente (infinito positivo o negativo). |
FP_NAN | Indica que el valor no es un número (NaN). |
[editar]Ejemplo
Ejecuta este código
#include <iostream>#include <cmath>#include <cfloat> constchar* mostrar_clasificacion(double x){switch(std::fpclassify(x)){case FP_INFINITE:return"Inf";case FP_NAN:return"NaN";case FP_NORMAL:return"normal";case FP_SUBNORMAL:return"subnormal";case FP_ZERO:return"cero";default:return"desconocido";}}int main(){std::cout<<"1.0/0.0 es "<< mostrar_clasificacion(1/0.0)<<'\n'<<"0.0/0.0 es "<< mostrar_clasificacion(0.0/0.0)<<'\n'<<"DBL_MIN/2 es "<< mostrar_clasificacion(DBL_MIN/2)<<'\n'<<"-0.0 es "<< mostrar_clasificacion(-0.0)<<'\n'<<"1.0 es "<< mostrar_clasificacion(1.0)<<'\n';}
Salida:
1.0/0.0 es Inf 0.0/0.0 es NaN DBL_MIN/2 es subnormal -0.0 es cero 1.0 es normal
[editar]Véase también
(C++11) | Categoriza el valor de punto flotante dado (función) |
Documentación de C para FP_categories |