Problemi di casting

DOMANDA:

Perché se effettuo una divisione tra due interi in una variabile double ottengo in output un numero senza cifre decimali?

double risultato = 10 / 3;
OUTPUT: 3,0


RISPOSTA:

Come si può intuire, in Java, a causa della regola sulle precedenze degli operatori, il cast automatico avviene dopo la 
divisione tra i due numeri interi 10 e 3. Il risultato 3 viene quindi convertito in double e diventa 3,0.


L'operazione sopra, infatti equivale a:
double risultato = (double) (10 / 3);
OUTPUT: 3,0

Per ottenere la precisione prevista (senza perdita di informazione) basta fare il cast di almeno uno dei due interi a double:
double risultato = (double) 10 / 3;
oppure:
double risultato = 10 / (double) 3;
entrambe le operazioni danno il risultato sperato:
OUTPUT: 3,3333333333333335

Ovviamente lo stesso risultato poteva essere raggiunto attraverso l'utilizzo dei letterali:
double risultato = 10D / 3;


Commenti

Post popolari in questo blog

Arrotondamento e troncamento in Java

Eclipse: Shortcuts (scorciatoie) da tastiera

Strutture dati: List, Set, Map

Creare un eseguibile Java