我试图得到常数e的近似值,其中e = 2 + 1/2! + 1/3! + 1/4! + ....... 每次我总是运行代码!如果你能纠正我的代码,我将不胜感激。)
import java.util.Scanner;
public class E
{
public static void main (String[] args)
{
Scanner scan = new Scanner (System.in);
System.out.println("How many iterations");
//n = iterations
int n = scan.nextInt();
long factor =1; //starts at 1
long e = 1; //e starting point
for (int i=1; i<=n; i++)
{
factor = factor * i;
e += 1/factor;
}
System.out.println(e);
}
}
答案 0 :(得分:2)
您正在执行整数除法,在Java中,它会截断任何小数结果,以便结果始终为整数。这是一行:
e += 1/factor;
这导致您多次添加0
,这不是您需要的。
使用double
文字1.0
强制进行浮点计算。
e += 1.0/factor;
此外,数学 e 不是整数(它是非理性和超验的),因此long
是一种不合适的数据类型。将e
声明为double
。
在这些变化之后,这是我得到的输出:
How many iterations
20
2.7182818284590455