考虑两个long类型整除,以下结果会溢出:
public class p3 {
public static void main(String[] args) {
final long MICRO_PER_DAY=24*60*60*1000*1000;
final long MILLIS_PER_DAY=24*60*60*1000;
System.out.println( MICRO_PER_DAY / MILLIS_PER_DAY );
}
}
原因在于两个long类型的数都是用乘法来写的,所以在进行计算时,都当做int来计算,还没来得及转换成long,就在int那里溢出了。
所以将第一个操作数用long来声明,就得到了正确结果:
public class p3 {
public static void main(String[] args) {
final long MICRO_PER_DAY=24L*60*60*1000*1000;
final long MILLIS_PER_DAY=24L*60*60*1000;
System.out.println( MICRO_PER_DAY / MILLIS_PER_DAY );
}
}