首先,我是編碼和 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;
uj5u.com熱心網友回復:
整數數學。1 / i除了第一次迭代之外,所有的都將是 0。
您可以洗掉倒數并使用a / i.
pi4 = a / i;
uj5u.com熱心網友回復:
在 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;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/328473.html
標籤:C
上一篇:如何使用插入排序對向量進行排序?
