long sum = 0; for (int i = 1; i <=100; i++) { long item=1; for(int j=1;j<=i;j++){ item=item*j; } sum=sum+item; } System.out.println(sum);
输出结果:1005876315485501977
经过分析,这个答案是错误的,1!+2!+3!+4!+.....+100!的结果的个位数肯定是3的,上面的代码的逻辑的问题都没有问题,验算过。错误的地方是item变量,我把它设置为long类型,就出现了1005876315485501977这个结果,为什么不可设置成long类型?求解
我把item变量设置成int类型,结果溢出,100阶乘的和超过long的内存空间,采用BigInteger类去操作,输出结果正确。不懂的就是为什么item变量类型不可以设置成long类型。朋友,解答一下。thx
大咪
相关分类