2016-09-18 61 views
0

我很困惑它是如何發生的。產出不如預期。存儲在long變量中的值不像預期的那樣

public class Test2 { 

public static void main(String arg[]){ 
    int interval = 43200; 
    long tempInterval = interval * 60000; 
    System.out.println(tempInterval); 
}} 

預期的輸出是2592000000,但我得到-1702967296。這可能是天真的 問題,但我堅持這一點。

+0

'60000'是'int','interval'是'int'。所以'interval * 60000'是'int * int',它是'int'。將'int'結果存儲在'long'變量中不會改變它的值。你可能需要'60000L'字面值來表示'long'類型,所以你最終會得到'int * long = long'(現在是重複的地方)。 – Pshemo

+0

和http://stackoverflow.com/questions/17221254/1000-60-60-24-30-results-in-a-negative-number – Tunaki

回答

0

後60000

添加A L的Java假設你使用INT乘法,之前它的澆鑄爲長,這會導致一個整數溢出。

+0

感謝您的立即答覆。它的工作,我得到適當的結果。 – subro