I Java, Java.
Det finns två typer av flytande punktdatatyper:
- flytande datatyp
- dubbel datatyp
Både float och double representerar flyttalstalen som lagrar decimalvärdena.
fjäderstövel
Flytpunktsdatatyp | Värderingar | Storlek (bitar)* | Lagringskrav (byte) | Standardvärde | Precision | Decimala siffror | Räckvidd | Noggrannhet |
---|---|---|---|---|---|---|---|---|
flyta | IEEE 754 Flytande punkt | 32 | 4 | 0,0f | Enda | 6 decimalsiffror | 3.4e-038 till 3.4e+038 | Låg |
dubbel | IEEE 754 Flytande punkt | 64 | 8 | 0,0d | Dubbel | 15 decimalsiffror | 1.7e-308 till 1.7e+308 | Hög |
*Storleksbitarna inkluderar följande:
Bits | flyta | dubbel |
---|---|---|
Skylt | 1 | 1 |
Exponent | 8 | elva |
Mantissa | 23 | 52 |
Enkel precision: Den består av ett teckenbit (S), åtta exponentbitar (E), och tjugotre mantissbitar (M).
Dubbel precision: Den består av ett teckenbit (S), elva exponentbitar (E), och femtiotvå mantissbitar (M).
flytande datatyp
Det är ett 32-bitars, enkelprecision IEEE 754 (Standard for Floating-Point Arithmetic) flyttalsnummer. Det betyder att det ger 6-7 decimalsiffror precision. Det används om vi vill använda minnet effektivt eftersom det tar mindre minne jämfört med dubbel datatyp. För att definiera ett flytvärde måste vi använda ett suffix f eller F. Dess standardvärde är 0.0f. Som standard behandlas flyttal som dubbla i Java.
Till exempel, om vi definierar ett flyttal som:
float height = 167.7
Ovanstående deklaration av flytande variabel ger kompileringsfelet. Vi kan korrigera felet genom att lägga till ett suffix f eller F.
float height = 167.7f or float height = 167.7F
dubbel datatyp
Den dubbla datatypen är ett 64-bitars dubbelprecisions IEEE 754 flyttal. Det betyder att det ger 15-16 decimalsiffror precision. Den förbrukar mer minne jämfört med flytdatatypen. Den används för att lagra decimalvärden. Dess standardvärde är 0.0d. Det är valfritt att lägga till suffixet d eller D. Till exempel:
double price = 987.90D or double price = 987.90d or double price = 987.90
float kontra dubbel datatyp
Den dubbla datatypen är mer exakt än den flytande datatypen. Följande tabell sammanfattar skillnaderna mellan flytande och dubbla datatyper.
Grund | flytande datatyp | dubbel datatyp |
---|---|---|
Minne | Det upptar 4 bytes. | Det upptar 8 bytes. |
Noggrannhet | Dess noggrannhet är låg . | Dess noggrannhet är hög . |
Precision | Det följer enkel precision (6-7 decimalsiffror). | Det följer Dubbel precision (15-16 decimalsiffror). |
Nyckelord används | De flyta nyckelord används för att definiera ett flytnummer. | De dubbel nyckelord används för att definiera ett nummer med dubbel precision. |
Omslagsklass | Dess omslagsklass är java.lang.Float. | Dess omslagsklass är java.lang.Double. |
Standarddatatyp | Java använder det inte som standard flyttal. | Det är standard datatyp för flyttal. |
Dataförlust | Det kommer vara ingen dataförlust om vi konverterar float till dubbel. | Det kommer vara dataförlust om vi konverterar dubbel till flytande. |
Används | Den ska användas var mindre noggrannhet krävs och lagring är en begränsning. | Den används var mer noggrannhet krävs och kräver också mer precision. |
Ändelse | Det använder F eller f som suffix. Det är obligatoriskt att lägga till ett suffix om du deklarerar en flytande variabel. | Det använder d eller D som suffix. Det är valfritt att lägga till ett suffix om du deklarerar en dubbel variabel. |
Representation | 28,96f eller 28,96F | 12.5 eller 12,5D eller 12,5d |
Likheter mellan flytande och dubbel datatyp
- Reella tal kan representeras av båda datatyperna.
- Både flytande och dubbla datatyper är inte exakta, därför är de ungefärliga värden.
Vilken flyttalsdatatyp i Java ska vi använda?
dubbel är mer exakt än flytande. Så om ett mer exakt och exakt resultat krävs, använd dubbelt. En annan anledning att använda dubbel är att om numret inte passar inom det intervall som erbjuds av flöten så använd dubbel. Vi bör använda float om vi har minnesbegränsningar eftersom det upptar halvt utrymme än dubbelt.
Vi rekommenderar att du använder double over float om det inte finns något minne och utrymmesbegränsning och när mer precision behövs. Det är tillrådligt att gå med flottören om minnet är ett problem och resultatet med 16 precisionsdecimalsiffror inte krävs.
Följande två Java-program visa tydligt skillnaderna mellan flytande och dubbel datatyp.
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:
när börjar q2
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:
x/y = 0.3333333333333333
Genom de två ovanstående exemplen är det tydligt att dubbeldatatypen tar mer minne för att lagra ett dubbelprecisionsnummer och ger även det mer exakta resultatet upp till 16 decimalsiffror. Medan flytdatatypen tar mindre utrymme för att lagra enstaka precisionsnummer och den ger resultat upp till 6 decimaler.