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