java中e的逼近

java中e的逼近,java,for-loop,Java,For Loop,我试图得到常数e的近似值,其中e=2+1/2!+1/3! + 1/4! + ....... 每次我运行代码,我总是!得到2。如果您能更正我的代码,我将不胜感激:) import java.util.Scanner; 公共E类 { 公共静态void main(字符串[]args) { 扫描仪扫描=新扫描仪(System.in); System.out.println(“多少次迭代”); //n=迭代次数 int n=scan.nextInt(); long factor=1;//从1开始 长e=1

我试图得到常数e的近似值,其中e=2+1/2!+1/3! + 1/4! + ....... 每次我运行代码,我总是!得到2。如果您能更正我的代码,我将不胜感激:)

import java.util.Scanner;
公共E类
{
公共静态void main(字符串[]args)
{
扫描仪扫描=新扫描仪(System.in);
System.out.println(“多少次迭代”);
//n=迭代次数
int n=scan.nextInt();
long factor=1;//从1开始
长e=1;//e起点

对于(int i=1;i您正在执行整数除法,在Java中,它会截断任何十进制结果,使结果始终为整数。这是一行:

e +=  1/factor;
这会导致您多次添加
0
,这不是您需要的

使用
double
literal
1.0
强制浮点计算

e +=  1.0/factor;
此外,从数学上讲,e不是整数(它是无理的和超越的),因此
long
是不合适的数据类型。将
e
声明为
double

在这些更改之后,我得到的输出是:

How many iterations
20
2.7182818284590455

您有
e
作为
long
。这是一个整数值…如果您想更精确,可以切换到BigDecimal算术。
bigdecimate e…;…e=e.add(new BigDecimal(1).divideBy(factor))
等等。@geert3并使用更高的迭代次数。
How many iterations
20
2.7182818284590455