1. doubletip
Java oferă doubletipul pentru lucrul cu numere reale (fracționale). Ocupă 8 bytesîn memorie (de două ori mai multe decât inttipul) și poate stoca valori în intervalul de la . Pentru comparație: tipul poate stoca o valoare în intervalul de la până la .-1.7*10308+1.7*10308int-2*109+2*109
În numerele reale, partea fracțională se scrie după virgulă. De exemplu, 123.456, sau 2.5, sau 100.00 sau 0.01. Când computerele se ocupă de astfel de numere, le numim numere în virgulă mobilă .
Apropo, pe lângă doubletip, mai avem și floattipul (care are o dimensiune de doar 4 octeți). Numele său vine de la virgulă flotantă . Iar numele doublevine de la double float . A doubleeste de două ori mai mare decât a float: 8 bytesversus 4. Se mai numește și număr în virgulă mobilă cu precizie dublă .
2. Crearea unui doubletip
Tipul dublu este folosit pentru a stoca numere reale. Pentru a crea o variabilă în cod care poate stoca numere reale, trebuie să utilizați o declarație ca aceasta:
double name;
doubletip
Unde nume este numele variabilei. Exemple:
| Afirmație | Descriere |
|---|---|
|
priceSe creează o variabilă reală |
|
weightSe creează o variabilă reală |
|
lightSpeedSe creează o variabilă reală |
Ca și în cazul inttipului, puteți folosi prescurtarea pentru a crea mai multe doublevariabile simultan:
double name 1, name 2, name 3;
doublevariabile
Și chiar le atribuiți imediat valori:
double name 1 = value 1, name 2 = value 2, name 3 = value 3;
doublevariabile
Exemple:
| Afirmație | Notă |
|---|---|
|
Variabila stochează5.0 |
|
Variabila stochează2.0 |
|
3. Atribuirea numerelor întregi și reale
Ar fi rău dacă numerele întregi ar putea fi alocate doar intvariabilelor, iar numerele reale - numai doublevariabilelor. Vrem să putem face conversia între cele două tipuri de numere. Și Java oferă această abilitate.
În primul rând, atât numerele reale, cât și numere întregi pot fi atribuite doublevariabilelor. Când se atribuie numere întregi, acestea sunt pur și simplu convertite în numere reale. Desigur, o anumită precizie se poate pierde în proces.
| Afirmație | Notă |
|---|---|
|
Variabila stochează5.0 |
|
Variabila stochează2.0 |
|
Variabila xstochează1000000.0 |
În al doilea rând, dacă într-o expresie sunt implicate un număr întreg și un număr real, atunci numărul întreg este mai întâi convertit într-un număr real și abia apoi se efectuează operația cu celălalt număr real.
| Afirmație | Notă |
|---|---|
|
Variabila xstochează5000.0 |
|
Numărul 10va fi afișat pe ecran |
|
Numărul 10.0va fi afișat pe ecran |
Și, în sfârșit, este, de asemenea, posibil să atribuiți numere reale intvariabilelor. Când facem acest lucru, partea fracțională a numărului real este aruncată - numărul este rotunjit în jos la cel mai apropiat număr întreg.
În plus, compilatorul cere programatorului să documenteze în mod explicit ceea ce se întâmplă (pentru a fi siguri că alți programatori înțeleg că partea fracțională este abandonată). În general, o astfel de conversie arată astfel în cod:
integer_variable = (int)(real_number);
intvariabile
Exemple:
| Afirmație | Notă |
|---|---|
|
Variabila xstochează5 |
|
Variabila xstochează5 |
|
Variabila xstochează11 |
4. Împărțirea numerelor întregi și reale în Java
La împărțirea unui număr întreg la un număr întreg, restul este întotdeauna eliminat. Atunci cum putem împărți 5pentru 2a obține 2.5?
La început, se pare că opțiunea corectă este:
double d = 5 / 2;
Dar nu este atât de simplu. Problema aici este că mașina Java calculează mai întâi valoarea 5 / 2și abia apoi atribuie rezultatul variabilei d. Și 5 / 2operația este împărțirea întregului. Aceasta înseamnă d că va conține 2sau, pentru a fi mai precis,2.0
Soluția corectă este să scrieți cel puțin unul dintre numerele implicate în împărțire ca număr real (adică cu virgulă zecimală):
double d = 5.0 / 2;
double d = 5 / 2.0;
double d = 5.0 / 2.0;
În fiecare dintre expresii, d va conține2.5
Dar dacă lucrăm cu variabile? Dacă avem cod ca acesta?:
int a = 5;
int b = 2;
double d = a / b;
Există o soluție inteligentă (și evidentă) aici - forțați mașina Java să convertească variabilele în numere reale înmulțindu-le cu unul ca număr real ( 1.0)
int a = 5;
int b = 2;
double d = a * 1.0 / b;
Rețineți că înmulțirea și împărțirea au prioritate egală și sunt efectuate de la stânga la dreapta. Asta înseamnă că contează unde înmulțim 1.0.
Exemple:
| Afirmație | Ordin de executare | Rezultat |
|---|---|---|
|
(1.0 * a) / b; |
2.5 |
|
(a * 1.0) / b; |
2.5 |
|
(a / b) * 1.0; |
2.0 |
GO TO FULL VERSION