【发布时间】:2012-07-12 07:29:43
【问题描述】:
我试图找到一个大数的阶乘,例如8785856 以典型的方式使用for-loop和double数据类型。
但结果显示为无穷大,可能是因为它超出了它的限制。
所以请指导我如何找到一个非常大的数的阶乘。
我的代码:
class abc
{
public static void main (String[]args)
{
double fact=1;
for(int i=1;i<=8785856;i++)
{
fact=fact*i;
}
System.out.println(fact);
}
}
输出:-
Infinity
我是 Java 新手,但已经学习了一些 IO 处理等概念。
【问题讨论】:
-
你为什么不使用像
BigInteger这样的更高数据类型,这也是作业吗?如果是,则标记为这样。 -
你的循环变量 i 是 int 并且你试图在其中存储一个巨大的数字,也尝试将其设为 double
-
根据我的计算,大约需要 25 兆字节的内存来表示这个数字。即便如此,也不会听到
BigInteger类的声音。 -
是的,我也使用过 biginteger,但编译器无法显示这样一个数字的答案,所以还有其他出路吗???
-
“无法显示答案”是什么意思?能否贴出“无法显示答案”的代码?
标签: java factorial largenumber