2012-02-24 44 views
0

這似乎很簡單,但我得到一個不正確的答案輸出我的代碼。有人可以暗示我可能在這裏失蹤,或者我可能會犯任何錯誤,而沒有提供任何解決方案?項目歐拉#6 Java協助

的問題是找到前一米百名自然數的平方和和和的平方之間的差異。

我的代碼:

public class Main 
{ 
    public static void main(String[] args) 
{ 
     //Sum of Squares = (2n^3 + 3n^2 + n)/6 
     //Square of Sums = ((n^2 + n)/2)^2 

     double sum_squares = ((2*Math.pow(100,3) + 3*Math.pow(100, 2) + 100)/6); 
     double square_sums = Math.pow(((Math.pow(100, 2) + 100)/2), 2); 
     System.out.println((square_sums-sum_squares)+"\n"); 
    } 
} 

我的輸出2.516415E7這是不正確的,甚至當我進入狀態而不科學記數法。

親愛的堆棧溢出 - 大概簡單的東西,我想念在這裏!

編輯:彼得·德Rivaz解決我的問題。多麼愚蠢的錯誤!

+4

您有6位小數,但指數爲7。您是否記得把零置於末尾? – 2012-02-24 20:14:12

+0

哈哈你已經謙卑了我,先生,這是我的錯誤。謝謝! – SMT 2012-02-24 20:36:23

回答

1

您必須使用精確的整數類型,如int,longBigIntegerfloat/double將導致舍入錯誤。此外 - 你非常接近;-)。

+0

謝謝你的回覆!我只使用double類型,因爲Math.pow()在java文檔中表示它需要在參數中加倍。我只是不使用Math.pow(),所以我會避免使用雙打。 :) – SMT 2012-02-24 20:20:24

0

首先想到的是,你不應該使用雙打,而是整數算術。

+0

我使用雙打,因爲我最初計劃使用Math.pow()在java文檔中有雙參數。感謝您的回覆,但我認爲我只是不使用Math.pow(),這意味着我將使用整數。 :) – SMT 2012-02-24 20:18:52