Grafico comparativo:
Base per il confronto | Galleggiante | Doppio |
---|---|---|
Precisione | Singola precisione | Doppia precisione. |
bits | 32 bit. | 64 bit. |
byte | 4 byte. | 8 byte. |
Range approssimativo | Da 1.4e-045 a 3.4e + 038 | Da 4.9e-324 a 1.8e + 308 |
Rappresentazione di bit | 1 bit rappresenta il bit di segno. 8 bit rappresentano l'esponente. 23 bit rappresentano la mantissa. | 1 bit rappresenta il bit di segno. 11 bit rappresentano esponente. 52 bit rappresentano la mantissa. |
Precisione | Meno accurato. | Più accurato. |
Definizione di Float
Un tipo di dati float è uno dei tipi in virgola mobile. Il tipo di dati float ha una memoria a 32 bit (che è uguale a 4 byte) per la variabile di tipo float. Il tipo di dati float specifica una precisione singola. La rappresentazione di 32 bit in virgola mobile può essere spiegata come 1 bit è rappresentato come il bit di segno, 8 bit sono rappresentati come un esponente e 23 bit sono rappresentati come mantissa. L'intervallo massimo di un tipo float è 1.4e-045 to 3.4e + 038. Se confrontato con il tipo a virgola mobile a virgola mobile è meno preciso durante il calcolo matematico. Cerchiamo di capire float usando un esempio.
#include #include int main () {float num1 = sqrt (64.23) cout << num1; } // output 8.00060
Come nel codice precedente, è possibile osservare che a una variabile mobile num1 viene assegnato un valore che corrisponde alla funzione sqrt (), che restituisce la radice quadrata del valore passato a questa funzione. È possibile osservare che quando il valore in num1 viene stampato è vicino al valore esatto, ma non è accurato. Vediamo ora l'esempio qui sotto quando lo stesso programma viene eseguito usando double come datatype.
Definizione di Double
Double è il secondo tipo di datatype a virgola mobile. Un tipo di dati double ha una memoria a 64 bit (che è uguale a 8 byte) per una variabile di tipo double. Specifica la doppia precisione in quanto la sua dimensione è solo il doppio del galleggiante. La rappresentazione a 64 bit di tipo double può essere spiegata come 1 bit rappresenta il bit di segno, 11 bit rappresenta un esponente e i rimanenti 52 bit rappresentano la mantissa. Tra float e double il tipo di dati più comunemente usato è double. Il tipo double viene utilizzato durante il calcolo matematico e quando è necessaria una precisione perfetta. Le funzioni matematiche sin (), cos () e sqrt () restituiscono sempre un doppio valore. Cerchiamo di capire l'esattezza del doppio tipo di dati con un esempio.
#include #include int main () {double num1 = sqrt (64.23) cout << num1; } // output 8.0143621
Si può osservare che l'output ottenuto nell'esempio, spiegando il float, è diverso dall'output ottenuto nell'esempio, spiegando il doppio. Quindi, da questo, possiamo dire che i risultati ottenuti dal doppio sono più accurati rispetto al float.
Differenze chiave tra galleggiante e doppio
- Il tipo di dati float specifica una precisione singola che significa che rispetto al doppio ha meno precisione mentre, il doppio specifica la doppia precisione poiché è solo il doppio di float, il suo errore è trascurabile rispetto al float.
- Una variabile di tipo float ha una memoria di 32 bit mentre, una variabile di tipo double ha una memoria di 64 bit che compila che il doppio è maggiore nella memoria rispetto al float.
- Il valore in float può variare da 1, 4e-045 a 3, 4e + 038, mentre il valore di tipo double può variare da 4, 9 a 324 e 1, 88 + 308.
- La rappresentazione dei bit di un valore float è simile a quella di 1 bit di float per il bit di bit, gli 8 bit per l'esponente e 23 bit per la memorizzazione della mantissa. D'altra parte, un doppio valore ricorda che 1 bit di esso è usato per il bit di sing, gli 11 bit per l'esponente e 52 bit per la memorizzazione della mantissa.
- Se confrontato con il doppio float è meno preciso da qui, mentre viene usato il calcolo matematico double.
Conclusione:
Bene, devi generalmente usare il doppio in quanto fornisce la precisione che è la nostra moto principale il più delle volte.