logo

Zweven versus dubbele Java

In Java, Java .

Er zijn twee soorten drijvende-kommagegevenstypen:

  • zwevend gegevenstype
  • dubbel gegevenstype

Zowel float als double vertegenwoordigen de getallen met drijvende komma waarin de decimale waarden zijn opgeslagen.

Gegevenstype met drijvende komma Waarden Grootte (bits)* Opslagvereiste (bytes) Standaardwaarde Precisie Decimale cijfers Bereik Nauwkeurigheid
vlot IEEE 754 drijvende komma 32 4 0,0f Enkel 6 decimale cijfers 3.4e-038 tot 3.4e+038 Laag
dubbele IEEE 754 drijvende komma 64 8 0,0 d Dubbele 15 decimale cijfers 1.7e-308 tot 1.7e+308 Hoog

*De maatbits omvatten het volgende:

Beetjes vlot dubbele
Teken 1 1
Exponent 8 elf
Mantisse 23 52

Enkele precisie: Het bestaat uit een tekenbit (S), acht exponentbits (E), en drieëntwintig mantisse-bits (M).

Dubbele precisie: Het bestaat uit een tekenbit (S), elf exponentbits (E), en tweeënvijftig mantisse-bits (M).

Zweven versus dubbele Java

zwevend gegevenstype

Het is een 32-bits IEEE 754-getal (Standard for Floating-Point Arithmetic) met enkele precisie. Het betekent dat het een nauwkeurigheid van 6-7 decimalen geeft. Het wordt gebruikt als we geheugen effectief willen gebruiken, omdat het minder geheugen in beslag neemt in vergelijking met het dubbele gegevenstype. Om een ​​float-waarde te definiëren, moeten we een achtervoegsel f of F gebruiken. De standaardwaarde is 0.0f. Standaard worden float-getallen in Java als dubbel behandeld.

Als we bijvoorbeeld een float-getal definiëren als:

snaar omkeren in c
 float height = 167.7 

De bovenstaande declaratie van de float-variabele geeft de compilatiefout. We kunnen de fout corrigeren door een achtervoegsel f of F toe te voegen.

 float height = 167.7f or float height = 167.7F 

dubbel gegevenstype

Het dubbele gegevenstype is een 64-bits IEEE 754 drijvende-kommagetal met dubbele precisie. Het betekent dat het een nauwkeurigheid van 15-16 decimalen geeft. Het verbruikt meer geheugen in vergelijking met het float-gegevenstype. Het wordt gebruikt om decimale waarden op te slaan. De standaardwaarde is 0,0d. Het is optioneel om het achtervoegsel d of D toe te voegen. Bijvoorbeeld:

sorteer een arraylist
 double price = 987.90D or double price = 987.90d or double price = 987.90 

float versus dubbel gegevenstype

Het dubbele gegevenstype is nauwkeuriger dan het zwevende gegevenstype. De volgende tabel geeft een overzicht van de verschillen tussen float- en double-gegevenstypen.

Basis zwevend gegevenstype dubbel gegevenstype
Geheugen Het bezet 4 bytes. Het bezet 8 bytes.
Nauwkeurigheid De nauwkeurigheid ervan is laag . De nauwkeurigheid ervan is hoog .
Precisie Het volgt enkele precisie (6-7 decimale cijfers). Het volgt dubbele precisie (15-16 decimale cijfers).
Gebruikt trefwoord De vlot trefwoord wordt gebruikt om een ​​float-getal te definiëren. De dubbele trefwoord wordt gebruikt om een ​​getal met dubbele precisie te definiëren.
Wrapper-klasse De wrapper-klasse is java.lang.Float. De wrapper-klasse is java.lang.Dubbel.
Standaard gegevenstype Java gebruikt het niet als het standaard getal met drijvende komma. Het is de standaard gegevenstype voor getallen met drijvende komma.
Data verlies Er zal zijn geen gegevensverlies als we float omzetten in double. Er zal zijn data verlies als we dubbel omzetten in float.
Toepassingen Het moet worden gebruikt waar minder nauwkeurigheid is vereist en opslag is een beperking. Het wordt gebruikt waar meer nauwkeurigheid is vereist en vereist ook meer precisie.
Achtervoegsel Het gebruikt F of F als achtervoegsel. Het is verplicht om een ​​achtervoegsel toe te voegen als u een float-variabele declareert. Het gebruikt D of D als achtervoegsel. Het is optioneel om een ​​achtervoegsel toe te voegen als u een dubbele variabele declareert.
Vertegenwoordiging 28,96 f of 28,96F 12.5 of 12,5D of 12,5 d

Overeenkomsten tussen float en dubbel datatype

  • Reële getallen kunnen door beide gegevenstypen worden weergegeven.
  • Zowel float- als double-gegevenstypen zijn niet nauwkeurig en hebben daarom een ​​geschatte waarde.

Welk gegevenstype met drijvende komma in Java moeten we gebruiken?

dubbel is nauwkeuriger dan zweven. Dus als een nauwkeuriger en nauwkeuriger resultaat vereist is, gebruik dan dubbel. Een andere reden om dubbel te gebruiken is dat als het nummer niet past in het bereik van de float, u dubbel gebruikt. We moeten float gebruiken als we geheugenbeperkingen hebben, omdat het de helft van de ruimte in beslag neemt dan het dubbele.

We raden u aan om double over float te gebruiken als er geen geheugen- en ruimtebeperking is en als er meer precisie nodig is. Het is raadzaam om voor de float te kiezen als het geheugen een probleem is en het resultaat in 16 nauwkeurige decimale cijfers niet vereist is.

De volgende twee Java-programma's laat duidelijk de verschillen zien tussen float- en double-datatype.

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

Uitgang:

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

Uitgang:

 x/y = 0.3333333333333333 

Uit de twee bovenstaande voorbeelden blijkt duidelijk dat het dubbele gegevenstype meer geheugen nodig heeft om een ​​getal met dubbele precisie op te slaan en ook een nauwkeuriger resultaat oplevert tot 16 decimalen. Terwijl het float-gegevenstype minder ruimte in beslag neemt om getallen met enkele precisie op te slaan, en resultaten tot 6 decimalen oplevert.