Я изучал, как Java имеет дело с целочисленным переполнением и недостаточным заполнением, и я столкнулся с этими двумя ситуациями:
Если значение вне диапазона присваивается int напрямую, не может быть никакого переноса и это зависит от конверсии:
long tooBigLong=2147483648L;
int integerL=(int)tooBigLong;
double tooBigDouble=Math.pow(2, 31);
int integerD=(int)tooBigDouble;
результаты:
Converted from Long to int: -2147483648
Converted from Double to int: 2147483647
Кажется, что целочисленный переход будет происходят только когда я конвертирую из Long в int.
Но я хочу выяснить, как это не сработает для преобразования типа double в int? Спасибо за помощь!