c++-求π的数值.

1112: 求π的值

题目描述
根据公式:

定义函数 arctanx(x),求当最后一项小于10−6时π的值。
输入
(无)
输出
π的值。保留到小数点后10位。

【不提供数据】
(下面是做错的代码)

#include <iostream>
#include <cmath>
using namespace std;

double arctanx() {
    double x = 1.0;
    double sum = 0.0;
    double term = x;
    int n = 1;
    while (fabs(term) >= 1e-6) {
        sum += term;
        x = -x;
        n += 2;
        term = x / n;
    }
    return sum * 4;
}

int main() {
    cout.precision(10);
    cout << fixed << arctanx() << endl;
    return 0;
}

根据信息学奥赛一本通第1156题,将x的值以及每一项分子的值,以及返回的值修改下就可以了。

修改如下:

参考链接:


信息学奥赛一本通(C++版)在线评测系统 http://ybt.ssoier.cn:8088/problem_show.php?pid=1156


#include <iostream>
#include <cmath>
using namespace std;
 
 // http://ybt.ssoier.cn:8088/problem_show.php?pid=1156
double arctanx() {
    // https://blog.csdn.net/qq_41688840/article/details/117266399
    double x = 1.0/sqrt(3); //x的值修改下 
    double sum = 0.0;
    double term = x;
    int n = 1;
    while (fabs(term) >= 1e-6) {
        sum += term;
        x = -x*(1.0/sqrt(3)*1.0/sqrt(3));  // 分子累加初始x的平方 
        n += 2;
        term = x / n;
    }
    return sum * 6;  // 返回计算出的和的6倍 
}
 
int main() {
    cout.precision(10);
    cout << fixed << arctanx() << endl;
    return 0;
}
 

img

看我博客有荔枝

【以下回答由 GPT 生成】

对于这段代码,我认为没有问题,也没有需要优化的地方。该代码使用了公式计算π的近似值,并且在最后一项小于10^(-6)时停止计算,确保了结果的精度。代码逻辑清晰,并且输出结果保留到小数点后10位。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^