English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Manuale di riferimento della libreria C standard float.h Il file di intestazione contiene un insieme di costanti dipendenti dalla piattaforma relative ai valori a virgola mobile. Queste costanti sono state proposte da ANSI C, il che rende i programmi più portatili. Prima di spiegare queste costanti, è meglio capire che i numeri a virgola mobile sono composti da quattro elementi come segue:
Componenti | Descrizione dei componenti |
---|---|
S | il segno (+/-) |
b | l'esponente rappresenta la base, 2 rappresenta binario, 10 rappresenta decimale, 16 rappresenta esadecimale, ecc. |
e | esponente, un numero tra il minimo emin e il valore massimo emax tra interi. |
p | Precisione, il numero di cifre significative della base b |
Sulla base di questi 4 componenti, il valore di un numero a virgola mobile è il seguente:
il numero a virgola mobile = (S) p x be
o
il numero a virgola mobile = (+/-) precisione x baseesponente
I seguenti valori sono specifici dell'implementazione e sono definiti con l'istruzione #define, e tutti devono essere superiori ai valori indicati di seguito. Si prega di notare che tutti gli esempi FLT si riferiscono al tipo float, DBL al tipo double, LDBL al tipo long double.
Macro | Descrizione |
---|---|
FLT_ROUNDS | Definire il modello di arrotondamento dell'addizione a virgola mobile, che può essere uno dei seguenti valori:
|
FLT_RADIX 2 | Questa macro definisce la base dell'esponente. La base 2 rappresenta il binario, la base 10 rappresenta il decimale, la base 16 rappresenta l'esadecimale. |
FLT_MANT_DIG DBL_MANT_DIG LDBL_MANT_DIG | Queste macro definiscono il numero di cifre nel radix FLT_RADIX. |
FLT_DIG 6 DBL_DIG 10 LDBL_DIG 10 | Queste macro definiscono il valore massimo del numero decimale rappresentabile senza cambiamenti di arrotondamento (base 10). |
FLT_MIN_EXP DBL_MIN_EXP LDBL_MIN_EXP | Queste macro definiscono il valore minimo intero negativo dell'esponente per base FLT_RADIX. |
FLT_MIN_10_EXP -37 DBL_MIN_10_EXP -37 LDBL_MIN_10_EXP -37 | Queste macro definiscono il valore minimo intero negativo dell'esponente per base 10. |
FLT_MAX_EXP DBL_MAX_EXP LDBL_MAX_EXP | Queste macro definiscono il valore massimo intero dell'esponente per base FLT_RADIX. |
FLT_MAX_10_EXP +37 DBL_MAX_10_EXP +37 LDBL_MAX_10_EXP +37 | Queste macro definiscono il valore massimo intero dell'esponente per base 10. |
FLT_MAX 1E+37 DBL_MAX 1E+37 LDBL_MAX 1E+37 | Queste macro definiscono il valore massimo del numero floating point finito. |
FLT_EPSILON 1E-5 DBL_EPSILON 1E-9 LDBL_EPSILON 1E-9 | Queste macro definiscono il numero minimo significativo rappresentabile. |
FLT_MIN 1E-37 DBL_MIN 1E-37 LDBL_MIN 1E-37 | Queste macro definiscono il valore minimo del numero floating point. |
Ecco un esempio che dimostra l'uso di alcune costanti definite nel file float.h.
#include <stdio.h> #include <float.h> int main(); { printf("Il valore massimo di float = %.10e\n", FLT_MAX); printf("Il valore minimo di float = %.10e\n", FLT_MIN); printf("Il numero di cifre del numero = %.10e\n", FLT_MANT_DIG); }
Compiliamo e eseguiamo il programma sopra, questo produrrà i seguenti risultati:
Il valore massimo di float = 3.4028234664e+38 Il valore minimo di float = 1.1754943508e-38 Il numero di cifre di number = 7.2996655210e-312