logo

Float vs Double Java

Java nyelven Java.

Kétféle lebegőpontos adattípus létezik:

  • float Data Type
  • dupla adattípus

Mind a float, mind a double a tizedes értékeket tároló lebegőpontos számokat jelöli.

Lebegőpontos adattípus Értékek Méret (bit)* Tárhelyszükséglet (bájt) Alapértelmezett érték Pontosság Tizedesjegyek Hatótávolság Pontosság
úszó IEEE 754 lebegőpontos 32 4 0.0f Egyetlen 6 tizedesjegy 3.4e-038 – 3.4e+038 Alacsony
kettős IEEE 754 lebegőpontos 64 8 0.0d Kettős 15 tizedesjegy 1,7e-308-tól 1,7e+308-ig Magas

*A méretbitek a következőket tartalmazzák:

Bits úszó kettős
Jel 1 1
Kitevő 8 tizenegy
Mantissa 23 52

Egyszeres pontosság: Ebből áll egy jel bit (S), nyolc kitevő bitek (E), és huszonhárom mantissza bitek (M).

Dupla pontosság: Ebből áll egy jel bit (S), tizenegy kitevő bitek (E), és 52 mantissza bitek (M).

Float vs Double Java

float Data Type

Ez egy 32 bites, egyszeres pontosságú IEEE 754 (Standard for Floating-Point Aithmetic) lebegőpontos szám. Ez azt jelenti, hogy 6-7 tizedesjegy pontosságot ad. Akkor használjuk, ha hatékonyan akarjuk használni a memóriát, mert kevesebb memóriát igényel a kettős adattípushoz képest. A lebegő érték meghatározásához f vagy F utótagot kell használnunk. Az alapértelmezett értéke 0.0f. Alapértelmezés szerint a lebegőszámokat a Java kettősként kezeli.

Például, ha egy lebegőszámot a következőképpen definiálunk:

 float height = 167.7 

A float változó fenti deklarációja megadja a fordítási hibát. A hibát f vagy F utótag hozzáadásával javíthatjuk.

 float height = 167.7f or float height = 167.7F 

dupla adattípus

A kettős adattípus egy 64 bites dupla pontosságú IEEE 754 lebegőpontos szám. Ez azt jelenti, hogy 15-16 tizedesjegy pontosságot ad. Több memóriát fogyaszt a lebegő adattípushoz képest. A decimális értékek tárolására szolgál. Az alapértelmezett értéke 0.0d. Nem kötelező hozzáadni a d vagy a D utótagot. Például:

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

float Vs double Data Type

A kettős adattípus pontosabb, mint a lebegő adattípus. Az alábbi táblázat összefoglalja a float és a dupla adattípusok közötti különbségeket.

Alap float Data Type dupla adattípus
memória Elfoglalja 4 bájtok. Elfoglalja 8 bájtok.
Pontosság A pontossága az alacsony . A pontossága az magas .
Pontosság Ebből következik egyszeres pontosságú (6-7 tizedesjegy). Ebből következik dupla pontosság (15-16 tizedesjegy).
Használt kulcsszó A úszó kulcsszó a lebegőszám meghatározására szolgál. A kettős kulcsszó egy dupla pontosságú szám meghatározására szolgál.
Csomagoló osztály A csomagolóanyag osztálya az java.lang.Float. A csomagolóanyag osztálya az java.lang.Double.
Alapértelmezett adattípus A Java nem használja alapértelmezett lebegőpontos számként. Ez a alapértelmezett adattípus lebegőpontos számokhoz.
Adatvesztés Lesz nincs adatvesztés ha az úszót duplává alakítjuk. Lesz adatvesztés ha a duplát lebegővé alakítjuk.
Felhasználások Hol kell használni kisebb a pontosság szükséges, és a tárolás korlátot jelent. Hol használják nagyobb pontosság szükséges, és nagyobb pontosságot is igényel.
Utótag Használja F vagy f utótagként. Kötelező utótag hozzáadása, ha lebegő változót deklarál. Használja d vagy D utótagként. Nem kötelező hozzáadni egy utótagot, ha kettős változót deklarál.
Reprezentáció 28.96f vagy 28,96F 12.5 vagy 12,5D vagy 12,5d

Hasonlóságok a float és a dupla adattípus között

  • A valós számok mindkét adattípussal ábrázolhatók.
  • Mind a float, mind a dupla adattípusok nem pontosak, ezért közelítő értékek.

Melyik lebegőpontos adattípust használjuk a Java-ban?

a double pontosabb, mint a float. Tehát, ha pontosabb és pontosabb eredményre van szükség, használjon duplát. Egy másik ok a double használatára az, hogy ha a szám nem illeszkedik az úszó által kínált tartományba, akkor használjon duplát. A float-ot akkor kell használnunk, ha memóriakorlátunk van, mert fél helyet foglal el, mint duplája.

Javasoljuk a double over float használatát, ha nincs memória- és helykorlát, és ha nagyobb pontosságra van szükség. Célszerű az úszóval menni, ha a memória aggodalomra ad okot, és nem szükséges a 16 pontos tizedesjegyű eredmény.

A következő kettő Java programok világosan mutatják a float és a dupla adattípus közötti különbségeket.

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

Kimenet:

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

Kimenet:

 x/y = 0.3333333333333333 

A fenti két példán keresztül jól látható, hogy a dupla adattípus több memóriát foglal el egy dupla pontosságú szám tárolásához, és pontosabb eredményt ad 16 tizedesjegyig. Míg a lebegő adattípus kevesebb helyet foglal el az egyszeres pontosságú számok tárolásához, és legfeljebb 6 tizedesjegyig ad eredményt.