尝试使用 for 循环计算 Pi 只给出 3
Trying to calculate Pi using a for loop only gives 3
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
float pi =0;
bool add = true;
for (int i =1; i < 30000; i+=2) {
if (add) {
pi = pi + (4/i);
add = false;
} else {
pi = pi - (4 / i);
add = true;
}
}
cout << setprecision(18);
cout << pi;
return 0;
}
然而我的输出只有3!一直……为什么会这样?我的逻辑有什么问题?
是代码有问题还是莱布尼茨系列与计算机关系不好?
pi = pi + (4/i);
请改为pi = pi + 4.0 / i;
。整数除以整数是整数除法,不会产生浮点结果。
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
float pi =0;
bool add = true;
for (int i =1; i < 30000; i+=2) {
if (add) {
pi = pi + (4/i);
add = false;
} else {
pi = pi - (4 / i);
add = true;
}
}
cout << setprecision(18);
cout << pi;
return 0;
}
然而我的输出只有3!一直……为什么会这样?我的逻辑有什么问题?
是代码有问题还是莱布尼茨系列与计算机关系不好?
pi = pi + (4/i);
请改为pi = pi + 4.0 / i;
。整数除以整数是整数除法,不会产生浮点结果。