我試圖用萊布尼茲系列和我得到的問題approoximate pi是:萊布尼茨系列的Java
pi = 4(1 - 1/3 + 1/5 - 1/7 + 1/9 - 1/11 + ((-1)^i+1)/2i - 1
:「您可以通過以下一系列近似π
編寫一個程序,顯示i = 10,000,20,000,...的π值爲100,000「
現在這個問題本身是相當含糊的,這主要是我想要的幫助,到目前爲止我已經到了這裏。
public class Q2 { public static void main(String[] args) { for (int i = 1; i <= 10000; i++) { double pi = 4* (1 - (1/3) + (1/5) - (1/7) + (1/9) - (1/11) + (Math.pow((-1),(i+1)))/((2*i)-1)); if(i%10000==0) { System.out.println(); } } } }
的問題是,在運行時系統產生任何結果,如果有額外的else語句跑去檢查pi的vallue它給回的變化對4.000200030004501和3.999799949987497。
if(i%10000==0) { System.out.println(); } else { System.out.print(pi); }
我補充說錯了嗎?我感覺自己像是在盯着我臉上的問題,而我錯過了! 謝謝, Dave。
這個問題似乎被問大約每週一次。如果要分割兩個數字,而不是四捨五入爲整數,則其中一個必須是非整數類型。例如,1.0/3,而不是1/3。看看http://stackoverflow.com/questions/13668007/odd-behaviors-when-dividing-doubles-in-java。 –
執行Math.pow()調用也不是嚴格必要的 - 這是一個方便的數學表示法來捕獲交替符號,但檢查我是偶數還是奇數,並且翻轉該術語的符號效率更高如有必要。 –