2014-09-02 49 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 2014-09-02 06:10:59

+1

整数溢出发生的事情。让他们中的任何一个变长。这样可以避免停止发生整数乘法。 – 2014-09-02 06:11:17

回答

4

尝试

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

为你的代码是乘以为INT,然后转换成一个长。作为int的值溢出int的最大值,但长时间可以为OK。