logo

Float vs Double Java

I Java, Java.

Det finnes to typer flytende punktdatatyper:

  • flytende datatype
  • dobbel datatype

Både float og double representerer flyttallstallene som lagrer desimalverdiene.

matrisemultiplikasjon i c
Flytende punkt datatype Verdier Størrelse (bits)* Lagringskrav (bytes) Standardverdi Presisjon Desimalsiffer Område Nøyaktighet
flyte IEEE 754 flytende punkt 32 4 0,0f Enkelt 6 desimaler 3.4e-038 til 3.4e+038 Lav
dobbelt IEEE 754 flytende punkt 64 8 0,0d Dobbelt 15 desimaler 1.7e-308 til 1.7e+308 Høy

*Størrelsesbitene inkluderer følgende:

Bits flyte dobbelt
Skilt 1 1
Eksponent 8 elleve
Mantissa 23 52

Enkel presisjon: Det består av en tegnbit (S), åtte eksponentbiter (E), og tjue-tre mantissebiter (M).

Dobbel presisjon: Det består av en tegnbit (S), elleve eksponentbiter (E), og femtito mantissebiter (M).

Float vs Double Java

flytende datatype

Det er et 32-bits, enkeltpresisjon IEEE 754 (Standard for Floating-Point Arithmetic) flyttallnummer. Det betyr at det gir 6-7 desimalsiffer presisjon. Det brukes hvis vi ønsker å bruke minne effektivt fordi det tar mindre minne sammenlignet med dobbel datatype. For å definere en flytende verdi, må vi bruke et suffiks f eller F. Standardverdien er 0.0f. Som standard behandles flyttall som doble i Java.

java til json-objekt

For eksempel, hvis vi definerer et flyttall som:

 float height = 167.7 

Ovennevnte deklarasjon av flytvariabel gir kompileringsfeilen. Vi kan rette feilen ved å legge til et suffiks f eller F.

 float height = 167.7f or float height = 167.7F 

dobbel datatype

Den doble datatypen er et 64-bits IEEE 754-flyttall med dobbel presisjon. Det betyr at det gir 15-16 desimalsiffer presisjon. Den bruker mer minne sammenlignet med flytdatatypen. Den brukes til å lagre desimalverdier. Standardverdien er 0.0d. Det er valgfritt å legge til suffikset d eller D. For eksempel:

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

flyte kontra dobbel datatype

Den doble datatypen er mer nøyaktig enn den flytende datatypen. Tabellen nedenfor oppsummerer forskjellene mellom flytende og doble datatyper.

Basis flytende datatype dobbel datatype
Hukommelse Det opptar 4 bytes. Det opptar 8 bytes.
Nøyaktighet Dens nøyaktighet er lav . Dens nøyaktighet er høy .
Presisjon Det følger enkeltpresisjon (6-7 desimaler). Det følger dobbel presisjon (15-16 desimaler).
Søkeord brukt De flyte nøkkelord brukes til å definere et flyttall. De dobbelt nøkkelord brukes til å definere et tall med dobbel presisjon.
Innpakningsklasse Dens innpakningsklasse er java.lang.Float. Dens innpakningsklasse er java.lang.Double.
Standard datatype Java bruker det ikke som standard flyttallnummer. Det er den misligholde datatype for flyttall.
Datatap Det vil være ingen tap av data hvis vi konverterer float til dobbel. Det vil være tap av data hvis vi konverterer dobbel til float.
Bruker Den skal brukes hvor mindre nøyaktighet er nødvendig og lagring er en begrensning. Den brukes hvor mer nøyaktighet er nødvendig og krever også mer presisjon.
Suffiks Det bruker F eller f som et suffiks. Det er obligatorisk å legge til et suffiks hvis du erklærer en flytende variabel. Det bruker d eller D som et suffiks. Det er valgfritt å legge til et suffiks hvis du erklærer en dobbel variabel.
Representasjon 28,96f eller 28,96F 12.5 eller 12,5D eller 12,5d

Likheter mellom flytende og dobbel datatype

  • Reelle tall kan representeres av begge datatyper.
  • Både flytende og doble datatyper er ikke presise, derfor er de omtrentlige verdier.

Hvilken flytende kommadatatype i Java bør vi bruke?

dobbel er mer presist enn flyte. Så hvis et mer presist og nøyaktig resultat er nødvendig, bruk dobbel. En annen grunn til å bruke dobbel er at hvis tallet ikke passer i området som tilbys av float, så bruk dobbel. Vi bør bruke float hvis vi har minnebegrensninger fordi den opptar halv plass enn dobbelt.

Vi anbefaler deg å bruke double over float hvis det ikke er minne og plassbegrensninger og når mer presisjon er nødvendig. Det er tilrådelig å gå med float, hvis minne er et problem, og resultatet med 16 presise desimalsiffer ikke er nødvendig.

De to følgende Java-programmer Vis tydelig forskjellene mellom flytende og dobbel 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 } } 

Produksjon:

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

Produksjon:

hvordan sjekke skjermstørrelsen
 x/y = 0.3333333333333333 

Gjennom de to eksemplene ovenfor er det klart at den doble datatypen tar mer minne for å lagre et tall med dobbel presisjon og gir også det mer nøyaktige resultatet opp til 16 desimaler. Mens datatypen flytende tar mindre plass for å lagre enkeltpresisjonstall, og den gir resultater på opptil 6 desimaler.