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