logo

Float contro doppio Java

A Giava, Giava.

pulsante nel css centrale

Esistono due tipi di dati in virgola mobile:

  • tipo di dati float
  • doppio tipo di dati

Entrambi, float e double rappresentano i numeri a virgola mobile che memorizzano i valori decimali.

Tipo di dati a virgola mobile Valori Dimensioni (bit)* Requisiti di archiviazione (byte) Valore di default Precisione Cifre decimali Allineare Precisione
galleggiante IEEE 754 in virgola mobile 32 4 0.0f Separare 6 cifre decimali da 3.4e-038 a 3.4e+038 Basso
Doppio IEEE 754 in virgola mobile 64 8 0.0d Doppio 15 cifre decimali da 1.7e-308 a 1.7e+308 Alto

*Le dimensioni includono quanto segue:

Bit galleggiante Doppio
Cartello 1 1
Esponente 8 undici
Mantissa 23 52

Precisione singola: Consiste in uno bit di segno (S), otto bit dell'esponente (E) e ventitré pezzi di mantissa (M).

Doppia precisione: Consiste in uno bit di segno (S), undici bit dell'esponente (E) e cinquantadue pezzi di mantissa (M).

Float contro doppio Java

tipo di dati float

È un numero in virgola mobile IEEE 754 (Standard for Floating-Point Arithmetic) a 32 bit e precisione singola. Ciò significa che fornisce una precisione di 6-7 cifre decimali. Viene utilizzato se vogliamo utilizzare la memoria in modo efficace perché richiede meno memoria rispetto al doppio tipo di dati. Per definire un valore float, dobbiamo utilizzare un suffisso fo F. Il suo valore predefinito è 0.0f. Per impostazione predefinita, i numeri float vengono trattati come double in Java.

polimorfismo di Java

Ad esempio, se definiamo un numero float come:

 float height = 167.7 

La dichiarazione precedente della variabile float fornisce l'errore di compilazione. Possiamo correggere l'errore aggiungendo un suffisso fo F.

 float height = 167.7f or float height = 167.7F 

doppio tipo di dati

Il tipo di dati double è un numero a virgola mobile IEEE 754 a doppia precisione a 64 bit. Significa che fornisce una precisione di 15-16 cifre decimali. Consuma più memoria rispetto al tipo di dati float. Viene utilizzato per memorizzare valori decimali. Il suo valore predefinito è 0.0d. È facoltativo aggiungere il suffisso d o D. Ad esempio:

 double price = 987.90D or double price = 987.90d or double price = 987.90 

float Vs double tipo di dati

Il tipo di dati double è più accurato del tipo di dati float. La tabella seguente riepiloga le differenze tra i tipi di dati float e double.

Base tipo di dati float doppio tipo di dati
Memoria Occupa 4 byte. Occupa 8 byte.
Precisione La sua precisione è Basso . La sua precisione è alto .
Precisione Segue precisione singola (6-7 cifre decimali). Segue doppia precisione (15-16 cifre decimali).
Parola chiave utilizzata IL galleggiante la parola chiave viene utilizzata per definire un numero float. IL Doppio La parola chiave viene utilizzata per definire un numero a precisione doppia.
Classe wrapper La sua classe wrapper è java.lang.Float. La sua classe wrapper è java.lang.Double.
Tipo di dati predefinito Java non lo utilizza come numero a virgola mobile predefinito. È il predefinito tipo di dati per numeri a virgola mobile.
Perdita di dati Ci sarà nessuna perdita di dati se convertiamo float in double. Ci sarà perdita di dati se convertiamo double in float.
Usi Dovrebbe essere usato dove meno precisione è obbligatorio e l'archiviazione è un vincolo. È usato dove maggiore precisione è necessario e richiede anche maggiore precisione.
Suffisso Utilizza F O F come suffisso. È obbligatorio aggiungere un suffisso se stai dichiarando una variabile float. Utilizza D O D come suffisso. È facoltativo aggiungere un suffisso se stai dichiarando una doppia variabile.
Rappresentazione 28.96f O 28,96F 12.5 O 12,5D O 12.5d

Somiglianze tra tipo di dati float e double

  • I numeri reali possono essere rappresentati da entrambi i tipi di dati.
  • Entrambi i tipi di dati float e double non sono precisi, quindi hanno un valore approssimativo.

Quale tipo di dati in virgola mobile in Java dovremmo usare?

double è più preciso di float. Quindi, se è richiesto un risultato più preciso e accurato, utilizzare il doppio. Un altro motivo per utilizzare double è che se il numero non rientra nell'intervallo offerto dal float, utilizzare double. Dovremmo usare float se abbiamo vincoli di memoria perché occupa metà spazio rispetto al doppio.

Ti consigliamo di utilizzare double over float se non ci sono vincoli di memoria e spazio e quando è necessaria maggiore precisione. È consigliabile utilizzare il float, se la memoria è un problema e non è richiesto il risultato in 16 cifre decimali di precisione.

I due seguenti Programmi Java mostrano chiaramente le differenze tra il tipo di dati float e double.

shweta tiwari

FloatDataTypeExample.java

 public class FloatDataTypeExample { public static void main(String args[]) { float x = 1.0f, y = 3.0f; //defining x and y as float float z = x / y; //divides x by y and stores the result in the variable z System.out.println('x/y = ' + z); //prints the result } } 

Produzione:

 x/y = 0.33333334 

DoubleDataTypeExample.java

 public class DoubleDataTypeExample { public static void main(String args[]) { double x = 1.0, y = 3.0; //defining x and y as double double z = x / y; //divides x by y and stores the result in the variable z System.out.println('x/y = ' + z); //prints the result } } 

Produzione:

 x/y = 0.3333333333333333 

Attraverso i due esempi precedenti, è chiaro che il tipo di dati double richiede più memoria per memorizzare un numero a precisione doppia e fornisce anche un risultato più accurato fino a 16 cifre decimali. Mentre il tipo di dati float richiede meno spazio per memorizzare numeri a precisione singola e fornisce risultati fino a 6 cifre decimali.