长整除

java puzzle里的一个例子,有点意思,这个方法会打印什么结果?

public void longDivsion(){
   long micros = 24 * 60 * 60 * 1000 * 1000;
   long millis = 24 * 60 * 60 * 1000;
   System.out.println(micros/millis);
}


输出的结果是5!
long micros = 24 * 60 * 60 * 1000 * 1000,等号右边得到的结果为整型然后转换成long并赋值给micros,如果得到的结果超过整型的范围,那么在转化成long时必然是个错误的结果。

正确的写法是:
                     long micros1 = 24L * 60 * 60 * 1000 * 1000;
long millis1 = 24L * 60 * 60 * 1000;
System.out.println(micros1/millis1);

你可能感兴趣的:(长整除)