logo

Float vs Double Java

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

Float vs Double Java

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.