Biblioteca C - <float.h>
los float.hEl archivo de encabezado de la biblioteca estándar de C contiene un conjunto de varias constantes dependientes de la plataforma relacionadas con valores de coma flotante. Estas constantes son propuestas por ANSI C. Permiten hacer programas más portátiles. Antes de verificar todas las constantes, es bueno comprender que el número de punto flotante se compone de los siguientes cuatro elementos:
No Señor. | Componente y descripción de componente |
---|---|
1 | S signo (+/-) |
2 | b base o raíz de la representación del exponente, 2 para binario, 10 para decimal, 16 para hexadecimal, y así sucesivamente ... |
3 | e exponente, un número entero entre un mínimo emin y un máximo emax. |
4 | p precisión, el número de dígitos base-b en el significado. |
Según los 4 componentes anteriores, un punto flotante tendrá su valor de la siguiente manera:
floating-point = ( S ) p x be
or
floating-point = (+/-) precision x baseexponent
Macros de biblioteca
Los siguientes valores son específicos de la implementación y se definen con la directiva #define, pero estos valores pueden no ser más bajos que los que se dan aquí. Tenga en cuenta que en todos los casos FLT se refiere al tipofloat, DBL se refiere a double, y LDBL se refiere a long double.
No Señor. | Macro y descripción |
---|---|
1 | FLT_ROUNDS Define el modo de redondeo para la suma de punto flotante y puede tener cualquiera de los siguientes valores:
|
2 | FLT_RADIX 2 Esto define la representación de la base del exponente. Una base 2 es binaria, la base 10 es la representación decimal normal, la base 16 es Hex. |
3 | FLT_MANT_DIG DBL_MANT_DIG LDBL_MANT_DIG Estas macros definen el número de dígitos del número (en la base FLT_RADIX). |
4 | FLT_DIG 6 DBL_DIG 10 LDBL_DIG 10 Estas macros definen el número máximo de dígitos decimales (base 10) que se pueden representar sin cambios después del redondeo. |
5 | FLT_MIN_EXP DBL_MIN_EXP LDBL_MIN_EXP Estas macros definen el valor entero negativo mínimo para un exponente en la base FLT_RADIX. |
6 | FLT_MIN_10_EXP -37 DBL_MIN_10_EXP -37 LDBL_MIN_10_EXP -37 Estas macros definen el valor entero negativo mínimo para un exponente en base 10. |
7 | FLT_MAX_EXP DBL_MAX_EXP LDBL_MAX_EXP Estas macros definen el valor entero máximo para un exponente en la base FLT_RADIX. |
8 | FLT_MAX_10_EXP +37 DBL_MAX_10_EXP +37 LDBL_MAX_10_EXP +37 Estas macros definen el valor entero máximo para un exponente en base 10. |
9 | FLT_MAX 1E+37 DBL_MAX 1E+37 LDBL_MAX 1E+37 Estas macros definen el valor máximo de coma flotante finito. |
10 | FLT_EPSILON 1E-5 DBL_EPSILON 1E-9 LDBL_EPSILON 1E-9 Estas macros definen el dígito menos significativo representable. |
11 | FLT_MIN 1E-37 DBL_MIN 1E-37 LDBL_MIN 1E-37 Estas macros definen los valores mínimos de coma flotante. |
Ejemplo
El siguiente ejemplo muestra el uso de algunas de las constantes definidas en el archivo float.h.
#include <stdio.h>
#include <float.h>
int main () {
printf("The maximum value of float = %.10e\n", FLT_MAX);
printf("The minimum value of float = %.10e\n", FLT_MIN);
printf("The number of digits in the number = %.10e\n", FLT_MANT_DIG);
}
Compilemos y ejecutemos el programa anterior que producirá el siguiente resultado:
The maximum value of float = 3.4028234664e+38
The minimum value of float = 1.1754943508e-38
The number of digits in the number = 7.2996655210e-312