Java中的奇怪计算行为

时间:2015-08-19 08:55:42

标签: java

为什么第一次计算的结果大于第二次计算?

Info:   1440788283924
Info:   1439160414740 

结果:

{{1}}

2 个答案:

答案 0 :(得分:2)

表达式

1000*60*60*24*30*3

导致32位整数溢出。修复它的一种方法是将第一个操作数设为long,这将强制整个表达式进入long类型:

1000L*60*60*24*30*3

答案 1 :(得分:1)

Integeroverflow正在您的案例中发生,1000*60*60*24*30*3的值变为-813934592