Привет, поэтому недавно я увидел вопрос, структурированный так:
int a= (int) Math.pow(2,32);
System.out.println(a); //prints out Integer.MAX_VALUE
После того, как я ответил на вопрос, оказалось, что я ошибся, я ответил на Integer.MIN_VALUE, но правильный ответ был Integer.MAX_VALUE.После дальнейшего тестирования я понял, что любой double, который я приведу к int, больше чем Integer.MAX_VALUE, просто делает int равным Integer.MAX_VALUE.Например,
int a = (int) ((double) Integer.MAX_VALUE+100);
System.out.println(a); //prints out Integer.MAX_VALUE
После дальнейшего тестирования я понял, что если вы пытаетесь привести long к int, кажется, что int присваивается, казалось бы, случайному числу.
Итак, мой вопрос.Какого черта происходит, почему двойное значение не переполняет целое число, когда вы приводите его к типу int?и почему приведение long к int возвращает, казалось бы, случайное число