1. doubledigitare
Java fornisce il doubletipo per lavorare con numeri reali (frazionari). Occupa 8 bytesin memoria (il doppio rispetto al inttipo) 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*10308int-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 doubletipo, abbiamo anche il floattipo (che ha una dimensione di soli 4 byte). Il suo nome deriva da virgola mobile . E il nome doublederiva da double float . A doubleè grande il doppio di a float: 8 bytescontro 4. È anche chiamato numero a virgola mobile a precisione doppia .
2. Creazione di un doubletipo
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;
doubletipo
Dove nome è il nome della variabile. Esempi:
| Dichiarazione | Descrizione |
|---|---|
|
priceViene creata una variabile reale |
|
weightViene creata una variabile reale |
|
lightSpeedViene creata una variabile reale |
Come con il inttipo, puoi usare la scorciatoia per creare più doublevariabili contemporaneamente:
double name 1, name 2, name 3;
doublevariabili
E anche assegnare immediatamente valori a loro:
double name 1 = value 1, name 2 = value 2, name 3 = value 3;
doublevariabili
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 intvariabili e i numeri reali solo alle doublevariabili. 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 doublevariabili. 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 xvariabile 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 xvariabile memorizza5000.0 |
|
Il numero 10verrà visualizzato sullo schermo |
|
Il numero 10.0verrà visualizzato sullo schermo |
E infine, è anche possibile assegnare numeri reali alle intvariabili. 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);
intvariabile
Esempi:
| Dichiarazione | Nota |
|---|---|
|
La xvariabile memorizza5 |
|
La xvariabile memorizza5 |
|
La xvariabile 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 5per 2ottenere 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 / 2e solo successivamente assegna il risultato alla dvariabile. E l' 5 / 2operazione è la divisione di interi. Ciò significa d che conterrà 2o, 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