Ich habe Code wie folgt aus:Warum Java Math.round() kann nicht mit dieser Nummer umgehen?
System.out.println("Math.round(1423562400L) => " + Math.round(1423562400L));
Und das Ergebnis ist folgendes:
Math.round(1423562400L) => 1423562368
Dieser Wert ist ein 64-Bit-Integer aber es passt leicht in eine ganze Zahl 32-Bit, die in passen sollte ein Doppel. Was ist los?
Es funktioniert, wenn Sie 'gegossen (double)' zuerst. Anscheinend ist es sonst ein "Float"! – Thilo
Aber warum wird ein 'long' automatisch in einen' float' umgewandelt? – swdev
@swdev [JLS 15.12.2] (http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.12.2) sagt, dass sowohl float als auch double anwendbar sind , und [JLS 15.12.2.5] (http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.12.2.5) sagt float ist die ** spezifischste Methode **. – Nier