簡體   English   中英

在 C++ 中使用 Liebniz 公式逼近 Pi

[英]Approximation of Pi using Liebniz Formula in C++

首先,我是編碼和 C++ 的新手。 我在互聯網上對我的問題進行了研究,但解決方案對我來說並不完全有效。

我試圖用 Liebniz 公式得到 Pi 的近似值,即:Pi/4 = 1 - 1/3 + 1/5 - 1/7 + 1/9 ...

代碼是可編譯和可運行的。 問題是我得到 4 作為每個迭代次數(n 值)的答案。 這是代碼的主要部分。

int main() {

int i ;
double a=1  ;
double pi4 = 0 ; 
long n;
cout << "Number of iterations? ";
cin >> n;

for (i=1; i <= (n) ; i += 2) {

    pi4 = pi4 + a * (1 / i);
    a = -a;

}

cout.precision(20);
cout << "Pi = " << (pi4 * 4) << endl;
return 0;

整數數學。 除了第一次迭代之外, 1 / i將為 0。

您可以刪除倒數並只使用a / i

pi4 += a / i;

在 C++ 中,除以 int 是其他語言中的:floor(a / int)。 將“i”轉換為雙精度,或“告訴”編譯器,這是一個浮點除法。 (因為這是整數除法,或歐幾里得除法 [https://en.wikipedia.org/wiki/Euclidean_division] [https://stackoverflow.com/questions/3602827/what-is-the-behavior-of-integer -分配])

#include <iostream>

using namespace std;

int main() {

int i ;
double a=1  ;
double pi4 = 0 ; 
long n;
cout << "Number of iterations? ";
cin >> n;

for (i=1; i <= (n) ; i += 2) {

    pi4 = pi4 + a / i;
    // pi4 = pi4 + a * (1.0 / i);
    a = -a;

}

cout.precision(20);
cout << "Pi = " << (pi4 * 4) << endl;
return 0;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM