为何C++程序中pi变量无法随循环更新?
你的π近似程序问题分析与修复
核心问题1:整数除法导致计算无意义
你代码里的1 / denominator是整数除法——因为1和denominator都是int类型,当denominator大于1时,结果直接取整为0。不管是加还是减0,pi的值自然不会变化。
解决方法很简单,把1改成1.0(变成浮点数),或者把denominator强制转换为double:
// 两种写法选其一即可 pi -= (1.0 / denominator); // 或者 pi -= (static_cast<double>(1) / denominator);
核心问题2:循环条件语法错误
你的循环条件i <+ k是笔误,应该是i <= k或者i < k,否则编译都通不过。具体选哪个取决于你想要的迭代次数。
修复后的完整代码示例
#include <iostream> using namespace std; int main() { int k = 10000; // 这里可以自定义迭代次数 double pi = 1; for (int i = 0; i <= k; i++){ int denominator = (i * 2) + 3; if (i % 2 == 0){ pi -= (1.0 / denominator); } else { pi += (1.0 / denominator); } } pi *= 4; cout << "Approximation of pi is " << pi << endl; return 0; }
内容的提问来源于stack exchange,提问作者Everett Vetos
相关产品推荐
相关产品推荐

