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).
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.