1. double
típus
double
A Java valós (tört) számokkal való munkavégzés típusát biztosítja . A memóriát elfoglalja 8 bytes
(kétszer annyit, mint a típus), és től ig terjedő int
tartományban tud értékeket tárolni . Összehasonlításképpen: a típus tól és -ig terjedő tartományban tud értéket tárolni .-1.7*10308
+1.7*10308
int
-2*109
+2*109
Valós számokban a tört részt tizedesvessző után írjuk. Például 123,456, 2,5, 100,00 vagy 0,01. Amikor a számítógépek ilyen számokkal foglalkoznak, lebegőpontos számoknak nevezzük őket .
Egyébként a double
típuson kívül megvan a float
típus is (ami mindössze 4 bájt méretű). A neve a lebegőpontból származik . A név pedig a dupla úszóbóldouble
származik . A kétszer akkora, mint a : versus . Dupla pontosságú lebegőpontos számnak is nevezik .double
float
8 bytes
4
2. double
Típus létrehozása
A dupla típus valós számok tárolására szolgál. Valós számok tárolására alkalmas változó létrehozásához a következőhöz hasonló utasítást kell használnia:
double name;
Ahol a név a változó neve. Példák:
Nyilatkozat | Leírás |
---|---|
|
Valós price változó jön létre |
|
Valós weight változó jön létre |
|
Valós lightSpeed változó jön létre |
A típushoz hasonlóan int
a gyorsírással több változót is létrehozhat double
egyszerre:
double name 1, name 2, name 3;
És akár azonnal rendeljen hozzá értékeket:
double name 1 = value 1, name 2 = value 2, name 3 = value 3;
Példák:
Nyilatkozat | jegyzet |
---|---|
|
A változó tárolja5.0 |
|
A változó tárolja2.0 |
|
3. Egész és valós számok hozzárendelése
Rossz lenne, ha egész számokat csak változókhoz int
, valós számokat pedig csak változókhoz lehetne rendelni double
. Szeretnénk átváltani a kétféle szám között. A Java pedig ezt a képességet biztosítja.
Először is, valós és egész számokat is hozzá lehet rendelni a double
változókhoz. Egész számok hozzárendelésekor egyszerűen valós számokká konvertálják őket. Természetesen a pontosság elveszhet a folyamat során.
Nyilatkozat | jegyzet |
---|---|
|
A változó tárolja5.0 |
|
A változó tárolja2.0 |
|
A x változó tárolja1000000.0 |
Másodszor, ha egy egész szám és egy valós szám szerepel valamilyen kifejezésben, akkor az egész szám először valós számmá alakul, és csak ezután hajtják végre a műveletet a másik valós számmal.
Nyilatkozat | jegyzet |
---|---|
|
A x változó tárolja5000.0 |
|
A szám 10 megjelenik a képernyőn |
|
A szám 10.0 megjelenik a képernyőn |
És végül lehetséges valós számokat is hozzárendelni a változókhoz int
. Amikor ezt tesszük, a valós szám tört részét eldobjuk – a számot lefelé kerekítjük a legközelebbi egész számra.
Ezenkívül a fordító megköveteli a programozótól, hogy kifejezetten dokumentálja a történéseket (hogy megbizonyosodjon arról, hogy a többi programozó megérti, hogy a töredékes részt kihagyják). Általában egy ilyen konverzió a kódban így néz ki:
integer_variable = (int)(real_number);
Példák:
Nyilatkozat | jegyzet |
---|---|
|
A x változó tárolja5 |
|
A x változó tárolja5 |
|
A x változó tárolja11 |
4. Egész és valós számok felosztása Java nyelven
Egy egész szám egész számmal való osztásakor a maradékot mindig eldobjuk. Akkor hogyan oszthatjuk 5
el, 2
hogy megkapjuk 2.5
?
Elsőre úgy tűnik, hogy a megfelelő lehetőség:
double d = 5 / 2;
De ez nem ilyen egyszerű. A probléma itt az, hogy a Java gép először kiszámolja az értékét 5 / 2
, és csak azután rendeli hozzá az eredményt a változóhoz d
. A művelet pedig 5 / 2
egész számokkal való osztás. Ez azt jelenti , d
hogy tartalmazni fogja 2
, vagy pontosabban:2.0
A helyes megoldás, ha az osztásban részt vevő számok közül legalább egyet valós számként írunk (azaz tizedesvesszővel):
double d = 5.0 / 2;
double d = 5 / 2.0;
double d = 5.0 / 2.0;
Minden kifejezésben d
tartalmazni fogja2.5
De mi van akkor, ha változókkal dolgozunk? Mi van, ha ilyen kódunk van?:
int a = 5;
int b = 2;
double d = a / b;
Van itt egy sima (és kézenfekvő) megoldás: kényszerítse a Java gépet, hogy a változókat valós számokká alakítsa úgy, hogy valós számként megszorozza őket eggyel ( 1.0
)
int a = 5;
int b = 2;
double d = a * 1.0 / b;
Vegye figyelembe, hogy a szorzás és az osztás egyenlő elsőbbséggel bír, és balról jobbra történik. Ez azt jelenti, hogy számít, hol szorozzuk meg az 1,0-t.
Példák:
Nyilatkozat | Végrehajtási sorrend | Eredmény |
---|---|---|
|
(1.0 * a) / b; |
2.5 |
|
(a * 1.0) / b; |
2.5 |
|
(a / b) * 1.0; |
2.0 |