我是 java 新手,我的程序可能远没有它可能的效率那么高,但它是:
public class Compute {
public static void main(String[] args) {
for(double i = 10000; i <= 100000; i += 10000)
{
System.out.println("The value for the series when i = " + i + " is " + e(i));
}
}
public static double e(double input) {
double e = 0;
for(double i = 0; i <= input; i++)
{
e += 1 / factorial(input);
}
return e;
}
public static double factorial(double input) {
double factorial = 1;
for(int i = 1; i <= input; i++)
{
factorial *= i;
}
return factorial;
}
}
我相信这会计算 i = 10000, 20000, ..., & 100000 的值 e。
其中 e = 1 + (1/1!) + (2/2!) + ... + (1/i!)
这样做大约需要 47 秒,但我相信它有效。
我的问题是,对于每个 i,结果始终为 0.0
我相信这是因为每当调用阶乘方法时,返回值太大而无法存储,这会导致问题。
我可以做些什么来存储方法 Factorial 返回的值?