表达式之谜---长整除

xiaoxiao2022-06-12  36

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运算来完成。

转载请注明原文地址: https://www.6miu.com/read-4932969.html

最新回复(0)