cpp 求圆周率 π 题目内容:输入 n,根据下式求 π。π/2=(2*2)(4*4)...(2n*2n)/(1*3)(3*5)...[(2n-1)(2n+1)] 注意: n 均为 int 型,求 π 时相关变量用 double 型。程序要避免计算结果溢出。
时间: 2024-10-12 16:17:38 浏览: 34
在 C++ 中,可以使用上述公式来估算圆周率 π。首先,你需要理解这个公式的基本原理是利用无穷级数的方式逼近 π,其中分子是一个平方数序列,分母是奇数乘积。为了准确地计算而不发生溢出,并考虑到浮点精度,你可以编写如下的函数:
```cpp
#include <iostream>
#include <cmath>
double calculatePi(int n) {
double numerator = 1.0;
double denominator = 1.0;
for (int i = 1; i <= n; ++i) {
numerator *= pow(2 * i, 2);
denominator *= (2 * i - 1) * (2 * i + 1);
}
// 使用 double 类型保证足够的精度,除法操作避免整数溢出
return numerator / static_cast<double>(denominator) * 2;
}
int main() {
int n;
std::cout << "请输入一个整数 n: ";
std::cin >> n;
if (n <= 0) {
std::cerr << "n 必须大于0,请重新输入。\n";
return 1;
}
double pi_approximation = calculatePi(n);
std::cout << "使用 n=" << n << " 的近似值为: " << pi_approximation << "\n";
return 0;
}
```
阅读全文