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:

  • -1 - indeterminable
  • 0 - hacia cero
  • 1 - al más cercano
  • 2 - hacia el infinito positivo
  • 3 - hacia el infinito negativo
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