2016-09-18 65 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