Linguaggio C e Tipi Reali

androidiano
Ho un dubbio sulla rappresentazione dei numeri reali nel linguaggio C: il tipo float è rappresentato in floating point a precisione singola 32 bit (4 byte), la singola precisione permette di rappresentare al più 8 cifre significative mentre per il tipo double al più 16 cifre significative.
Per quale motivo le cifre significative sono 8 per float e 16 per double?
Nel floating point a 32 bit 1 bit per il segno, 8 per esponente e 23 per la mantissa, da dove escono le 8 cifre significative?

grazie anticipato

Risposte
vict85
Ti invito a non dare troppo per scontato quei numeri. Sono valori comuni ma cambiando compilatore e/o sistema questi valori potrebbero cambiare.

In ogni caso le cifre significative non sono binarie, bensì decimali.

apatriarca
Viene usata la distanza relativa tra due numeri consecutivi nella specifica rappresentazione. L'idea è che le prime \(n\) cifre decimali significative non variano quando un numero viene prima convertito nella rappresentazione floating point e poi riletto (a patto ovviamente che la conversione non converta il numero in subnormal o infiniti o altro).

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.