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 ladivisione 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
Posta un commento