public class LongDivision {
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);
final long MICROS_PER_DAY1 = 24L * 60 * 60 * 1000 * 1000;
final long MILLIS_PER_DAY1 = 24L * 60 * 60 * 1000;
System.out.println(MICROS_PER_DAY1 / MILLIS_PER_DAY1);
}
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);
final long MICROS_PER_DAY1 = 24L * 60 * 60 * 1000 * 1000;
final long MILLIS_PER_DAY1 = 24L * 60 * 60 * 1000;
System.out.println(MICROS_PER_DAY1 / MILLIS_PER_DAY1);
}
}
结果:
5
1000
1,问题在于MICROS_PER_DAY的计算溢出了。在其计算过程中,完全是以int运算来执行的,并且在计算完成之后,其结果才被提升为long。
解决方法是强制使用龙long运算
2,当操作很大的数字时,千万要堤防溢出。