1. double
tip
Java oferă double
tipul pentru lucrul cu numere reale (fracționale). Ocupă 8 bytes
în memorie (de două ori mai multe decât int
tipul) ș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*10308
int
-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ă double
tip, mai avem și float
tipul (care are o dimensiune de doar 4 octeți). Numele său vine de la virgulă flotantă . Iar numele double
vine de la double float . A double
este de două ori mai mare decât a float
: 8 bytes
versus 4
. Se mai numește și număr în virgulă mobilă cu precizie dublă .
2. Crearea unui double
tip
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;
double
tip
Unde nume este numele variabilei. Exemple:
Afirmație | Descriere |
---|---|
|
price Se creează o variabilă reală |
|
weight Se creează o variabilă reală |
|
lightSpeed Se creează o variabilă reală |
Ca și în cazul int
tipului, puteți folosi prescurtarea pentru a crea mai multe double
variabile simultan:
double name 1, name 2, name 3;
double
variabile
Și chiar le atribuiți imediat valori:
double name 1 = value 1, name 2 = value 2, name 3 = value 3;
double
variabile
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 int
variabilelor, iar numerele reale - numai double
variabilelor. 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 double
variabilelor. 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 x stochează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 x stochează5000.0 |
|
Numărul 10 va fi afișat pe ecran |
|
Numărul 10.0 va fi afișat pe ecran |
Și, în sfârșit, este, de asemenea, posibil să atribuiți numere reale int
variabilelor. 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);
int
variabile
Exemple:
Afirmație | Notă |
---|---|
|
Variabila x stochează5 |
|
Variabila x stochează5 |
|
Variabila x stochează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 5
pentru 2
a 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 / 2
operația este împărțirea întregului. Aceasta înseamnă d
că va conține 2
sau, 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