Я не понимаю, где я ошибаюсь в вычислениях, которые я сделал, почему я получил другой результат для консоли IDE.Консоль получает результат 14464
для println
для моего ShortTotal
.Но с помощью ручного вычисления на калькуляторе я получил аналогичное число, но +1
, которое было 14465
?
Я понимаю, что такое максимальные и минимальные значения короткого типа.Вот что я сделал до сих пор:
Поскольку короткое максимальное значение составляет около 32,767
.Так что снова идет к минимуму с оставшейся суммой.Так что на калькуляторе вы можете проверить это, выполнив: 1000 x (bytevalue+shortvalue + intvalue) = 80000
.Поскольку 80,000
больше короткого максимального значения, оно переполняется остатком.80,000-32767 =47233
затем добавьте это значение обратно к минимуму: - 32768 + 47233 = 14465
Мне удалось приблизиться к значению 14464
, но не знаю, почему я получаю 14465
?
package com.company;
public class Main {
public static void main(String[] args) {
byte ByteValue = 10;
short ShortValue = 20;
int IntValue = 50;
long LongTotal = 50000 + 10 * (ByteValue + ShortValue + IntValue);
System.out.println(LongTotal);
//The issue in question is below.
short ShortTotal = (short) (1000 * (ByteValue + ShortValue + IntValue));
System.out.println(ShortTotal);
}
}