这是我的析因程序代码。它工作正常,但是我不明白为什么为什么没有56,89,77和其他一些数字给我阶乘0。private static void factorial() { int resultant = 1, i; System.out.println("Please Enter any number to find factorial : "); Scanner scan = new Scanner(System.in); int fact = scan.nextInt(); for (i = 1; i <= fact; i++) { resultant = resultant * i; } System.out.println("Factorial of number : " + resultant);}
3 回答
![?](http://img1.sycdn.imooc.com/5458464a00013eb602200220-100-100.jpg)
侃侃无极
TA贡献2051条经验 获得超10个赞
作为乘积一部分的每个偶数对阶乘贡献尾随零。实际上,更精确地说,(无限精度)乘积的尾随零计数是输入的尾随零计数的总和。以有限的精度,尾随零的数量显然受数字大小的限制。
因此,最终,这很快发生,尾随零的数量变得大于或等于32,在这种情况下,an的所有位int
将为零。当然long
,稍后会发生同样的事情,在64个尾随零。在此之前的某个时间,即使结果还不完全为零,它也将已经停止匹配结果,而该结果本来可以无限精度地匹配。
例如34!十六进制是
de1bc4d19efcac82445da75b00000000
如果使用32位整数进行计算,将得到的最低8位数字,而所有这些数字均为零。
添加回答
举报
0/150
提交
取消