Biblioteca C - <float.h>

o float.ho arquivo de cabeçalho da Biblioteca C padrão contém um conjunto de várias constantes dependentes da plataforma relacionadas aos valores de ponto flutuante. Essas constantes são propostas pela ANSI C. Elas permitem fazer programas mais portáteis. Antes de verificar todas as constantes, é bom entender que o número de ponto flutuante é composto dos seguintes quatro elementos -

Sr. Não. Descrição do componente e do componente
1

S

sinal (+/-)

2

b

base ou raiz da representação do expoente, 2 para binário, 10 para decimal, 16 para hexadecimal e assim por diante ...

3

e

expoente, um número inteiro entre um mínimo emin e um máximo emax.

4

p

precisão, o número de dígitos de base b no significando.

Com base nos 4 componentes acima, um ponto flutuante terá seu valor da seguinte forma -

floating-point = ( S ) p x be

or

floating-point = (+/-) precision x baseexponent

Macros de biblioteca

Os seguintes valores são específicos da implementação e definidos com a diretiva #define, mas esses valores não podem ser inferiores aos fornecidos aqui. Observe que em todas as instâncias FLT se refere ao tipofloat, DBL se refere a double, e LDBL refere-se a long double.

Sr. Não. Macro e descrição
1

FLT_ROUNDS

Define o modo de arredondamento para adição de ponto flutuante e pode ter qualquer um dos seguintes valores -

  • -1 - indeterminável
  • 0 - em direção a zero
  • 1 - para o mais próximo
  • 2 - em direção ao infinito positivo
  • 3 - em direção ao infinito negativo
2

FLT_RADIX 2

Isso define a representação da raiz da base do expoente. A base 2 é binária, a base 10 é a representação decimal normal e a base 16 é Hex.

3

FLT_MANT_DIG

DBL_MANT_DIG

LDBL_MANT_DIG

Essas macros definem o número de dígitos no número (na base FLT_RADIX).

4

FLT_DIG 6

DBL_DIG 10

LDBL_DIG 10

Essas macros definem o número máximo de dígitos decimais (base 10) que podem ser representados sem alteração após o arredondamento.

5

FLT_MIN_EXP

DBL_MIN_EXP

LDBL_MIN_EXP

Essas macros definem o valor inteiro negativo mínimo para um expoente na base FLT_RADIX.

6

FLT_MIN_10_EXP -37

DBL_MIN_10_EXP -37

LDBL_MIN_10_EXP -37

Essas macros definem o valor inteiro negativo mínimo para um expoente na base 10.

7

FLT_MAX_EXP

DBL_MAX_EXP

LDBL_MAX_EXP

Essas macros definem o valor inteiro máximo para um expoente na base FLT_RADIX.

8

FLT_MAX_10_EXP +37

DBL_MAX_10_EXP +37

LDBL_MAX_10_EXP +37

Essas macros definem o valor inteiro máximo para um expoente na base 10.

9

FLT_MAX 1E+37

DBL_MAX 1E+37

LDBL_MAX 1E+37

Essas macros definem o valor máximo de ponto flutuante finito.

10

FLT_EPSILON 1E-5

DBL_EPSILON 1E-9

LDBL_EPSILON 1E-9

Essas macros definem o dígito menos significativo representável.

11

FLT_MIN 1E-37

DBL_MIN 1E-37

LDBL_MIN 1E-37

Essas macros definem os valores mínimos de ponto flutuante.

Exemplo

O exemplo a seguir mostra o uso de algumas das constantes definidas no arquivo 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);
}

Vamos compilar e executar o programa acima que produzirá o seguinte 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