You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言基于莱布尼茨级数计算π新增特定精度触发提示实现问题

解决方案

你需要在现有代码基础上补充以下内容:

  • 新增两个标记变量,用于记录对应精度的提示是否已经输出,避免重复提示
  • 新增每次迭代后的精度判断逻辑,命中首次达到精度的条件时输出特殊提示

修改后的完整代码

#include <stdio.h>

int main(void) {
    int i, den; // denominator and counter
    double pi = 4;
    // 新增标记变量:0代表未输出对应精度提示,1代表已输出
    int reach_314 = 0, reach_3141 = 0;

    for (i = 0; i < 10000; i++) {
        den = i * 2 + 3;
        // (4 - 4/3 + 4/5 -4/7 + 4/9 -......)
        if (i % 2 == 0) {
            pi = pi - (4.0 / den);
        }
        else {
            pi = pi + (4.0 / den);
        }

        // 新增精度判断逻辑
        // 判断是否首次达到3.14精度(保留两位小数为3.14)
        if (reach_314 == 0 && pi >= 3.135 && pi < 3.145) {
            printf("*首次达到3.14精度,当前迭代次数:%d,当前pi值:%lf*\n", i+1, pi);
            reach_314 = 1;
        }
        // 判断是否首次达到3.141精度(保留三位小数为3.141)
        if (reach_3141 == 0 && pi >= 3.1405 && pi < 3.1415) {
            printf("*首次达到3.141精度,当前迭代次数:%d,当前pi值:%lf*\n", i+1, pi);
            reach_3141 = 1;
        }

        printf("pi = %lf\n", pi);
    }
    return 0;
}

补充说明

  • 这里用区间判断的方式校验精度,不需要额外引入其他头文件,编译运行逻辑和原代码一致
  • 如果你希望用和真实圆周率的误差来判断精度,可以引入<math.h>头文件,使用fabs(pi - 3.1415926535) < 0.005的方式判断,编译时需要添加-lm参数链接数学库
  • 标记变量的作用是保证只有第一次达到对应精度时会输出提示,后续迭代不会重复输出

内容的提问来源于stack exchange,提问作者AymanTheBeginner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 03:06:03