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 -
|
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