看下面这个程序:
public static void main(String[] args){
final long MICROS_PER_DAY = 24*60*60*1000*1000;
final long MILLIS_PER_DAY = 24*60*60*1000;
System.out.println(MICROS_PER_DAY / MILLIS_PER_DAY);
}
本以为结果应该是1000,但是运行后,发现结果竟然是5.
以上就是长整除的误区了, 虽然 MICROS_PER_DAY 被定义为了long型,但是由于java按int型来做的乘法,
所以,无形之中,结果溢出了.
知道原因后,修改成以下就OK了
public static void main(String[] args){
final long MICROS_PER_DAY = 1L*24*60*60*1000*1000;
final long MILLIS_PER_DAY = 1L*24*60*60*1000;
System.out.println(MICROS_PER_DAY / MILLIS_PER_DAY);
}