Originariamente inviato da Dreamer89
codice:
double r = 1/2;
System.out.println(r);
Perchè dal frammento di questo codice, il risultato che visualizzo sullo schermo è: 0.0?? o_O
1 è una costante intera, 2 è una costante intera. Ne deriva che la divisione è "intera", non floating-point.

Se fosse stato ad esempio:

double r = 1.0/2;
o
double r = (double) 1/2;

Allora nel caso sopra 1.0 è una costante double mentre nel caso sotto il 1 intero viene convertito a double prima della divisione.

L'altro operando (il 2 intero) sarebbe stato convertito automaticamente a double e la divisione sarebbe stata fatta in floating-point, dando come risultato 0.5.

Rivedi le Conversions and Promotions in particolare la "Binary Numeric Promotion", perché sono fondamentali.