logo

Float vs Double Java

I Java, Java.

Der er to typer flydende punktdatatyper:

  • flydende datatype
  • dobbelt datatype

Både float og double repræsenterer de flydende decimaltal, der gemmer decimalværdierne.

udskæring af java
Datatype med flydende punkt Værdier Størrelse (bits)* Lagerkrav (bytes) Standard værdi Præcision Decimaltal Rækkevidde Nøjagtighed
flyde IEEE 754 Floating-Point 32 4 0,0f Enkelt 6 decimaler 3.4e-038 til 3.4e+038 Lav
dobbelt IEEE 754 Floating-Point 64 8 0.0d Dobbelt 15 decimaler 1.7e-308 til 1.7e+308 Høj

*Størrelsesbits inkluderer følgende:

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

Enkelt præcision: Den består af en tegnbit (S), otte eksponentbits (E), og treogtyve mantissebits (M).

Dobbelt præcision: Den består af en tegnbit (S), elleve eksponentbits (E), og tooghalvtreds mantissebits (M).

Float vs Double Java

flydende datatype

Det er et 32-bit, enkelt-præcision IEEE 754 (Standard for Floating-Point Arithmetic) flydende kommanummer. Det betyder, at det giver 6-7 decimalcifre præcision. Det bruges, hvis vi vil bruge hukommelsen effektivt, fordi det tager mindre hukommelse i forhold til dobbelt datatype. For at definere en flydende værdi skal vi bruge et suffiks f eller F. Dens standardværdi er 0,0f. Som standard behandles flydende tal som dobbelte i Java.

verilog parameter

For eksempel, hvis vi definerer et flydende tal som:

 float height = 167.7 

Ovenstående erklæring af float variabel giver kompileringsfejlen. Vi kan rette fejlen ved at tilføje et suffiks f eller F.

 float height = 167.7f or float height = 167.7F 

dobbelt datatype

Den dobbelte datatype er et 64-bit dobbeltpræcisions IEEE 754 flydende kommatal. Det betyder, at det giver 15-16 decimalcifre præcision. Det bruger mere hukommelse i forhold til float-datatypen. Det bruges til at gemme decimalværdier. Dens standardværdi er 0.0d. Det er valgfrit at tilføje suffiks d eller D. For eksempel:

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

float vs dobbelt datatype

Den dobbelte datatype er mere nøjagtig end den flydende datatype. Følgende tabel opsummerer forskellene mellem flydende og dobbelte datatyper.

Basis flydende datatype dobbelt datatype
Hukommelse Det optager 4 bytes. Det optager 8 bytes.
Nøjagtighed Dens nøjagtighed er lav . Dens nøjagtighed er høj .
Præcision Det følger enkelt præcision (6-7 decimaler). Det følger dobbelt præcision (15-16 decimaler).
Søgeord brugt Det flyde nøgleord bruges til at definere et flydende tal. Det dobbelt nøgleord bruges til at definere et tal med dobbelt præcision.
Indpakningsklasse Dens indpakningsklasse er java.lang.Float. Dens indpakningsklasse er java.lang.Dobbelt.
Standard datatype Java bruger det ikke som standard flydende kommanummer. Det er Standard datatype for flydende kommatal.
Datatab Der vil være intet tab af data hvis vi konverterer float til dobbelt. Der vil være tab af data hvis vi konverterer double til float.
Bruger Det skal bruges hvor mindre nøjagtighed er påkrævet, og opbevaring er en begrænsning. Det bruges hvor mere nøjagtighed er påkrævet og kræver også mere præcision.
Suffiks Det bruger F eller f som suffiks. Det er obligatorisk at tilføje et suffiks, hvis du erklærer en flydende variabel. Det bruger d eller D som suffiks. Det er valgfrit at tilføje et suffiks, hvis du erklærer en dobbelt variabel.
Repræsentation 28,96f eller 28,96F 12.5 eller 12,5D eller 12,5d

Ligheder mellem flydende og dobbelt datatype

  • Reelle tal kan repræsenteres af begge datatyper.
  • Både flydende og dobbelte datatyper er ikke præcise, og derfor er de omtrentlige værdier.

Hvilken flydende-komma-datatype i Java skal vi bruge?

double er mere præcist end float. Så hvis et mere præcist og præcist resultat er påkrævet, brug dobbelt. En anden grund til at bruge dobbelt er, at hvis tallet ikke passer inden for det område, der tilbydes af float, så brug dobbelt. Vi bør bruge float, hvis vi har hukommelsesbegrænsning, fordi den optager halvplads end dobbelt.

Vi anbefaler, at du bruger double over float, hvis der ikke er hukommelses- og pladsbegrænsninger, og når der er behov for mere præcision. Det er tilrådeligt at gå med flyderen, hvis hukommelsen er et problem, og resultatet med 16 præcise decimalcifre ikke er påkrævet.

De følgende to Java programmer viser tydeligt forskellene mellem flydende og dobbelt 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 } } 

Produktion:

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

Produktion:

html listeboks
 x/y = 0.3333333333333333 

Gennem de to ovenstående eksempler er det tydeligt, at den dobbelte datatype tager mere hukommelse til at gemme et dobbeltpræcisionsnummer og giver også det mere nøjagtige resultat op til 16 decimalcifre. Mens flydende datatype tager mindre plads at gemme enkeltpræcisionstal, og det giver resultater op til 6 decimaler.