2014-12-04 119 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