求e的近似值:e=1+1/1!+1/2!+1/3!+...+1/n!

时间:2022-08-01 18:32:28
public class Ja{
public static void main(String[]args){
double e=1.0;
int i;
for(i=1;e>=0.00001;i++){
int k=1;
for(int j=1;j<=i;j++){
k=k*j;
}
e=e+(1/k);
}
System.out.print("e的近似值:"+e);
}
}

麻烦大家帮我看看吧.

6 个解决方案

#1


e=e+(1/k); 改成 e = e + (1.0 / k); 再试试看呢

#2


应该还有问题,我重写一个吧。

#3


e=e+(1/k);
按照你的定义 该表达式就是e=e+0;
因为1除以同样为整型的k结果肯定是0了.把k定义为double型再试试.
祝你成功.

#4


public class TestE {

    public static void main(String[] args) {
        double e = 1;
        double f = 1;
        int k = 1;
        double delta = 1E-10; // 如果需要最高精度可以把值改为 0
        while(f > delta) {
            f /= k++;
            e += f;
        }
        System.out.println("我们算出来的 e: " + e);
        System.out.println("类库中的常量 e: " + Math.E);
    }
}

#5


不懂,我是来转分的#17

#6


呵呵  谢谢大家帮忙了.

#1


e=e+(1/k); 改成 e = e + (1.0 / k); 再试试看呢

#2


应该还有问题,我重写一个吧。

#3


e=e+(1/k);
按照你的定义 该表达式就是e=e+0;
因为1除以同样为整型的k结果肯定是0了.把k定义为double型再试试.
祝你成功.

#4


public class TestE {

    public static void main(String[] args) {
        double e = 1;
        double f = 1;
        int k = 1;
        double delta = 1E-10; // 如果需要最高精度可以把值改为 0
        while(f > delta) {
            f /= k++;
            e += f;
        }
        System.out.println("我们算出来的 e: " + e);
        System.out.println("类库中的常量 e: " + Math.E);
    }
}

#5


不懂,我是来转分的#17

#6


呵呵  谢谢大家帮忙了.