TypeCasting Math.Pow (2,31) до int не обертывается, как и ожидалось?JAVA

Программисты JAVA общаются здесь
Anonymous
TypeCasting Math.Pow (2,31) до int не обертывается, как и ожидалось?

Сообщение Anonymous »

Я пытался проверить свойство wrap ought, когда значение больше, чем контейнер, который может его удерживать. < /p>

Код: Выделить всё

public class Main {
public static void main(String[] args) {
double value = Math.pow(2,31);
System.out.println("Raw double: " + value);
System.out.println("After casting to int: " + (int)value);
System.out.println("Integer.MAX_VALUE: " + Integer.MAX_VALUE);
}
}
< /code>
Я сделал это в jshell-версия 20.0.2, Java 20.0.2 2023-07-18 и программа < /p>
Вывод, который я ожидал, так как значение должно обернуться: < /p>
Raw double: 2.147483648E9
After casting to int: -2147483648
Integer.MAX_VALUE: 2147483647
< /code>
Вывод, который я получил: < /p>
Raw double: 2.147483648E9
After casting to int: 2147483647
Integer.MAX_VALUE: 2147483647
Я также попробовал оператор смены 1L

Подробнее здесь: https://stackoverflow.com/questions/797 ... s-expected

Вернуться в «JAVA»