2014-09-02 5 views
0

Я уверен, что это не странно, а я не понимаю документы, но почему:Java долго странный результат

long myLong = 3600*24*365*70; 
System.out.println(String.valueOf(myLong)); 

дисплей -2087447296, когда это явно не результат 3600 * 24 * 365 * 70?

+1

это может помочь http://stackoverflow.com/questions/6332392/multiplication-operation-in-java-is-resulting-in-negative-value – hece

+1

Целочисленное переполнение происходит. Сделайте любой из них длинным. Это избавит вас от прекращения непрерывного умножения. –

ответ

4

попробовать

long myLong = 3600L*24*365*70; 

, как ваш код умножения в междунар и затем преобразование в Лонг. Значение как int переполняет максимальное значение для int, но будет в порядке как длинный.

Смежные вопросы