使用循环计算e

时间:2014-12-04 22:32:03

标签: java

我正在尝试迭代计算e,但我的代码给了我2.任何想法可能出错?因为我完全陷入困境。

public class iteratee {

    public static void main(String[] args) {

        long limit = 0;

        for (int i = 0; i < 11; i++) {

            limit = limit + 1/factorial(i);

        }

        System.out.println(limit);

    }

    static int factorial(int n) {

        int factorial = 1;

        for (int j = 1; j <= n; j++) {
            factorial = factorial * j;
        }

        return factorial; 

    }

}

2 个答案:

答案 0 :(得分:5)

long是表示整数值的类型;它根本不会反映任何小数。将limit更改为类型double并写入limit = limit + 1.0 / factorial(i),这将避免使用整数除法。

答案 1 :(得分:1)

更改此部分:

    long limit = 0;

    for (int i = 0; i < 11; i++) {

        limit = limit + 1/factorial(i);

    }

进入

    double limit = 0;

    for (int i = 0; i < 11; i++) {
        limit = limit + 1.0 / factorial(i);
    }

doublelimit而不是1.0设置1