Ho codice come questo:Perché Math.round() di Java non può gestire questo numero?
System.out.println("Math.round(1423562400L) => " + Math.round(1423562400L));
e il risultato è questo:
Math.round(1423562400L) => 1423562368
Questo valore è un intero a 64 bit ma si adatta facilmente all'interno di un numero intero di 32 bit, che dovrebbe corrispondere un doppio. Cosa sta succedendo?
Funziona quando si esegue il cast a '(doppia)' prima. Apparentemente, è un "float" altrimenti ?! – Thilo
Ma perché un 'long' viene lanciato automaticamente su un' float'? – swdev
@swdev [JLS 15.12.2] (http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.12.2) indica che sono applicabili sia la virgola mobile che la doppia e [JLS 15.12.2.5] (http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.12.2.5) indica che float è il ** metodo più specifico **. – Nier