Я пытаюсь понять кастинг типов в Java. Я прочитал, что long
преобразуется в int
, используя приведенные по модулю диапазоны int
, а float
преобразуется в int
, удаляя дробную часть.
Я попробовал следующий код.
class test
{
public static void main(String arf[])
{
System.out.println((int)2147483648.0);
System.out.println((int)2147483648L);
}
}
... где 2147483647 - максимальное значение int
.
Вывод:
2147483647
-2147483648
Когда float
преобразуется в int
, его дробная часть удаляется. Итак, (int)2147483648.0
также должен быть равен -2147483648
.
Может кто-нибудь объяснить мне, почему 2147483648.0
передается в 2147483647
?