2014-12-04 104 views
0

我试图计算e迭代,但我的代码给了我2.任何想法可能是错误的?因为我完全卡住了。使用循环计算e

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; 

    } 

} 
+4

'limit'(我假设“e”)是一个整数类型。 int中不能有小数点。切换到“双”。 – markspace 2014-12-04 22:33:09

回答

5

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

+0

此外,整数除法不会产生很好的答案。 – 2014-12-04 22:34:16

+0

谢谢!我不知道1/factorial(i)给出了一个四舍五入的整数。 (0) – Jack 2014-12-04 22:36:14

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); 
    } 

到有limit一个double1.0而不是1