1. doubletípus

doubleA 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ő inttartomá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*10308int-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 doubletípuson kívül megvan a floattí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 .doublefloat8 bytes4


2. doubleTí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;
doubleTípus létrehozása

Ahol a név a változó neve. Példák:

Nyilatkozat Leírás
double price;
Valós priceváltozó jön létre
double weight;
Valós weightváltozó jön létre
double lightSpeed;
Valós lightSpeedváltozó jön létre

A típushoz hasonlóan inta gyorsírással több változót is létrehozhat doubleegyszerre:

double name 1, name 2, name 3;
Több doubleváltozó létrehozása

És akár azonnal rendeljen hozzá értékeket:

double name 1 = value 1, name 2 = value 2, name 3 = value 3;
doubleTöbb változó létrehozása és inicializálása

Példák:

Nyilatkozat jegyzet
double price = 5.0;
A változó tárolja5.0
double weight = 2;
A változó tárolja2.0
double x = 1.0, y = 2.0, z = 3.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 doublevá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
double price = 5.0;
A változó tárolja5.0
double weight = 2;
A változó tárolja2.0
int t = 1000;
double x =  t * t;

A xvá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
int t = 1000;
double x = t * 5.0;

A xváltozó tárolja5000.0
System.out.println(5 * 2);
A szám 10megjelenik a képernyőn
System.out.println(5 * 2.0);
A szám 10.0megjelenik 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);
Valós szám hozzárendelése egy intváltozóhoz

Példák:

Nyilatkozat jegyzet
int x = (int)(5.5);
A xváltozó tárolja5
double a = 5.999;
int x = (int)(a);
A xváltozó tárolja5
double a = 5.999;
int b = 2;
int x = (int)(a * b);
A xvá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 5el, 2hogy 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 / 2egé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
int a = 5;
int b = 2;
double d = 1.0 * a / b;
(1.0 * a) / b; 2.5
int a = 5;
int b = 2;
double d = a * 1.0 / b;
(a * 1.0) / b; 2.5
int a = 5;
int b = 2;
double d = a / b * 1.0;
(a / b) * 1.0; 2.0