Perchè :
Mi restituisce :codice:int casuale=(int) Math.random()*20; System.out.println("numero casuale:"+ casuale);
Invece che un intero da 0 a 20 ?codice:numero casuale:0
Perchè :
Mi restituisce :codice:int casuale=(int) Math.random()*20; System.out.println("numero casuale:"+ casuale);
Invece che un intero da 0 a 20 ?codice:numero casuale:0
Perché il cast ha la precedenza sulla moltiplicazione. È come se avessi scritto:
che dà sempre zero, dato che Math.random() fornisce un double nel range [0, 1).codice:int casuale=((int) Math.random())*20;
Per sistemare, basta mettere delle parentesi
in modo da fare prima la moltiplicazione, poi il cast. Nota comunque che questo ti darà un intero tra 0 e 19, se vuoi tra 0 e 20 devi moltiplicare per 21.codice:int casuale=(int)(Math.random()*20);
Amaro C++, il gusto pieno dell'undefined behavior.