mam kod jak poniżej:Dlaczego Java Math.round() nie może obsłużyć tej liczby?
System.out.println("Math.round(1423562400L) => " + Math.round(1423562400L));
A wynik jest taki:
Math.round(1423562400L) => 1423562368
Ta wartość jest 64-bitowa liczba całkowita, ale łatwo mieści się wewnątrz 32-bitową liczbę całkowitą, która powinna w podwójny. Co się dzieje?
Działa gdy rzucisz na '(podwójne)' pierwszy. Podobno jest to "float" inaczej?! – Thilo
Ale dlaczego 'long' automatycznie rzuca się na' float'? – swdev
@ swdev [JLS 15.12.2] (http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.12.2) mówi, że zarówno zmienna jak i podwójna mają zastosowanie , a [JLS 15.12.2.5] (http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.12.2.5) mówi, że float jest ** najbardziej szczegółową metodą **. – Nier