1. double
digitare
Java fornisce il double
tipo per lavorare con numeri reali (frazionari). Occupa 8 bytes
in memoria (il doppio rispetto al int
tipo) e può memorizzare valori nell'intervallo da a . Per confronto: il tipo può memorizzare un valore nell'intervallo da a .-1.7*10308
+1.7*10308
int
-2*109
+2*109
Nei numeri reali la parte frazionaria si scrive dopo la virgola. Ad esempio, 123,456 o 2,5 o 100,00 o 0,01. Quando i computer gestiscono tali numeri, li chiamiamo numeri in virgola mobile .
A proposito, oltre al double
tipo, abbiamo anche il float
tipo (che ha una dimensione di soli 4 byte). Il suo nome deriva da virgola mobile . E il nome double
deriva da double float . A double
è grande il doppio di a float
: 8 bytes
contro 4
. È anche chiamato numero a virgola mobile a precisione doppia .
2. Creazione di un double
tipo
Il tipo double viene utilizzato per memorizzare numeri reali. Per creare una variabile nel codice in grado di memorizzare numeri reali, è necessario utilizzare un'istruzione come questa:
double name;
Dove nome è il nome della variabile. Esempi:
Dichiarazione | Descrizione |
---|---|
|
price Viene creata una variabile reale |
|
weight Viene creata una variabile reale |
|
lightSpeed Viene creata una variabile reale |
Come con il int
tipo, puoi usare la scorciatoia per creare più double
variabili contemporaneamente:
double name 1, name 2, name 3;
E anche assegnare immediatamente valori a loro:
double name 1 = value 1, name 2 = value 2, name 3 = value 3;
Esempi:
Dichiarazione | Nota |
---|---|
|
La variabile memorizza5.0 |
|
La variabile memorizza2.0 |
|
3. Assegnazione di numeri interi e numeri reali
Sarebbe brutto se gli interi potessero essere assegnati solo alle int
variabili e i numeri reali solo alle double
variabili. Vogliamo essere in grado di convertire tra i due tipi di numeri. E Java fornisce questa capacità.
Innanzitutto, sia i numeri reali che quelli interi possono essere assegnati alle double
variabili. Quando si assegnano numeri interi, vengono semplicemente convertiti in numeri reali. Naturalmente, una certa accuratezza potrebbe essere persa nel processo.
Dichiarazione | Nota |
---|---|
|
La variabile memorizza5.0 |
|
La variabile memorizza2.0 |
|
La x variabile memorizza1000000.0 |
In secondo luogo, se un numero intero e un numero reale sono coinvolti in un'espressione, allora il numero intero viene prima convertito in un numero reale e solo allora viene eseguita l'operazione con l'altro numero reale.
Dichiarazione | Nota |
---|---|
|
La x variabile memorizza5000.0 |
|
Il numero 10 verrà visualizzato sullo schermo |
|
Il numero 10.0 verrà visualizzato sullo schermo |
E infine, è anche possibile assegnare numeri reali alle int
variabili. Quando lo facciamo, la parte frazionaria del numero reale viene scartata: il numero viene arrotondato per difetto al numero intero più vicino.
Inoltre, il compilatore richiede al programmatore di documentare esplicitamente ciò che sta accadendo (per essere sicuri che gli altri programmatori capiscano che la parte frazionaria è stata eliminata). In generale, una tale conversione appare così nel codice:
integer_variable = (int)(real_number);
Esempi:
Dichiarazione | Nota |
---|---|
|
La x variabile memorizza5 |
|
La x variabile memorizza5 |
|
La x variabile memorizza11 |
4. Dividere interi e numeri reali in Java
Quando si divide un numero intero per un numero intero, il resto viene sempre scartato. Come possiamo quindi dividere 5
per 2
ottenere 2.5
?
All'inizio, sembra che l'opzione corretta sia:
double d = 5 / 2;
Ma non è così semplice. Il problema qui è che la macchina Java prima calcola il valore di 5 / 2
e solo successivamente assegna il risultato alla d
variabile. E l' 5 / 2
operazione è la divisione di interi. Ciò significa d
che conterrà 2
o, per essere più precisi,2.0
La soluzione corretta è scrivere almeno uno dei numeri coinvolti nella divisione come un numero reale (cioè con una virgola decimale):
double d = 5.0 / 2;
double d = 5 / 2.0;
double d = 5.0 / 2.0;
In ciascuna delle espressioni, d
conterrà2.5
Ma cosa succede se lavoriamo con le variabili? E se avessimo un codice come questo?:
int a = 5;
int b = 2;
double d = a / b;
C'è una soluzione chiara (e ovvia) qui: forza la macchina Java a convertire le variabili in numeri reali moltiplicandole per uno come un numero reale ( 1.0
)
int a = 5;
int b = 2;
double d = a * 1.0 / b;
Si noti che la moltiplicazione e la divisione hanno la stessa precedenza e vengono eseguite da sinistra a destra. Ciò significa che conta dove moltiplichiamo l'1.0.
Esempi:
Dichiarazione | Ordine di esecuzione | Risultato |
---|---|---|
|
(1.0 * a) / b; |
2.5 |
|
(a * 1.0) / b; |
2.5 |
|
(a / b) * 1.0; |
2.0 |
GO TO FULL VERSION