C语言程序编写

m0_57726302 2021-04-27 08:33:03
在线求大佬指点,为什么无论我怎么调i >=1e-10直到-25都是3.1415623,不能精确到下一位
...全文
992 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
m0_57726302 2021-04-28
  • 打赏
  • 举报
回复
引用 1 楼 qzjhjxj的回复:
供参考:
#include<stdio.h>
#include<math.h>
int main()
{
    double s=0.0,tmp=1.0;
    int    i=1,f=1;
    for(i=1;fabs(tmp)>=1e-9;i+=2){
        tmp=1.0*f/i;
        s+=tmp;
        f=-f;
    }
    printf("PI=%.10lf\n",4*s);
    
    return 0;
}
好的,谢谢
m0_57726302 2021-04-28
  • 打赏
  • 举报
回复
引用 2 楼 青蛙工作室的回复:
首先初始化i=1,然后比较i>0.00000001,这在i是正整数时一定成立,只在i自加到正数溢出成为负数时循环结束,所以循环被执行的次数就与1e-10还是1e-25没有关系。 然后,printf的%f默认只输出7个有效数字,要改为 "PI=%0.7f\n" double s = 0, f = 1.0; int i ; for (i = 1; i <1e8; i += 2) { s = s + f / i; f = -f; } printf("PI=%0.7f\n", 4*s);
好的,跪谢
青蛙工作室 2021-04-28
  • 打赏
  • 举报
回复
首先初始化i=1,然后比较i>0.00000001,这在i是正整数时一定成立,只在i自加到正数溢出成为负数时循环结束,所以循环被执行的次数就与1e-10还是1e-25没有关系。 然后,printf的%f默认只输出7个有效数字,要改为 "PI=%0.7f\n" double s = 0, f = 1.0; int i ; for (i = 1; i <1e8; i += 2) { s = s + f / i; f = -f; } printf("PI=%0.7f\n", 4*s);
qzjhjxj 2021-04-28
  • 打赏
  • 举报
回复
供参考:
#include<stdio.h>
#include<math.h>
int main()
{
    double s=0.0,tmp=1.0;
    int    i=1,f=1;
    for(i=1;fabs(tmp)>=1e-9;i+=2){
        tmp=1.0*f/i;
        s+=tmp;
        f=-f;
    }
    printf("PI=%.10lf\n",4*s);
    
    return 0;
}

13,826

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧