1. 当你的操作数是很大的数字时,千万要提防溢出,这是个缄默的杀手。
2. 可以用更大范围的long类型。
代码
public class LongDivision {
/**
* 长整除
*/
public static void main(String[] args) {
final long MICRO_PER_DAY = 24*60*60*1000*1000;
final long MILLS_PER_DAY = 24*60*60*1000;
System.out.println(MICRO_PER_DAY/MILLS_PER_DAY);
}
}
输出结果:5.
由于乘在一起的是int型数值,当两个int数值相乘时,你将得到另一个int数值,最终导致MICRO_PER_DAY溢出。
java不具有目标确定类型特性。
更正方法:final long MICRO_PER_DAY = 24L*60*60*1000*1000;
final long MILLS_PER_DAY = 24L*60*60*1000;
这样可以强制表达式后续计算都用long运算来完成。