FP_NORMAL, FP_SUBNORMAL, FP_ZERO, FP_INFINITE, FP_NAN
De cppreference.com
<tbody>
</tbody>
| 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). |
Ejemplo
Ejecuta este código
#include <iostream>
#include <cmath>
#include <cfloat>
const char* 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
Véase también
(C++11) |
Categoriza el valor de punto flotante dado (función) |
Documentación de C para FP_categories
| |