2013-02-18 45 views
0

我在Eclipse中嘗試從Project Euler解決問題#26時收到一個錯誤。無窮大錯誤 - 歐拉項目#26 - 互惠循環

我不想要解決方案!請。

如果你只能給我一個建議,爲什麼我收到「infinity」作爲輸出請填寫。我嘗試過使用谷歌搜索,但很難不意外地看到解決方案,我寧願這樣做盡可能少的幫助。

無窮大誤差在p = 309之後。這可能不是一個'錯誤',也許它只是簡單地截斷了一些東西。我已經嘗試了很久,並且BigInteger,但它似乎沒有幫助。

這裏是PE#26所造成的問題:

這裏是我的代碼:

public class Reciprocal_Cycles { 

    public static void main(String[] args) { 
     double b = 10; 
     double p; 
     for (p = 1; p < 1000; p++) { 
      if (p % b != 0) 

      System.out.println(((Math.pow(b, p - 1) - 1))/p + "  " + p); 
     } 
    } 
} 

回答

2

無窮大錯誤是p=309後。

一個double可以代表人數最多的是關於1.8e+308,並Math.pow(10, 309)比這個更大。當浮點計算溢出像這樣,你得到+inf

另外,當使用帶有浮點變量的p % b != 0時,我會小心。