Math.round(Long.MAX_VALUE+1) дает Integer.MIN_VALUE?JAVA

Программисты JAVA общаются здесь
Anonymous
Math.round(Long.MAX_VALUE+1) дает Integer.MIN_VALUE?

Сообщение Anonymous »

Разве обычно, когда мы включаем два числовых типа данных в одно выражение, тот, у которого меньше битов, преобразуется в тот, у которого больше битов? Например, если у нас есть: Integer.MAX_VALUE+0.6, оно преобразуется в двойное.
Я попробовал

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

Math.round(Long.MAX_VALUE+1)
и это дает мне Integer.MIN_VALUE; Это означает, что Long.MAX_VALUE преобразуется в Integer.MAX_VALUE, а затем произошло переполнение. Таким образом, в основном тип данных long превращается в int. Хотя даже параметр Math.round по определению является двойным. Таким образом, Integer в данном случае даже не является случаем по умолчанию. Я не знаю, в чем я ошибаюсь.

Подробнее здесь: https://stackoverflow.com/questions/788 ... -min-value

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