| 网站首页 | 业界新闻 | 小组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 112 人关注过本帖
标题:用公式π/4≈1-1/3+1/5……求π的近似值,要求直到最后一项的绝对值小于0.0 ...
只看楼主 加入收藏
li1346819486
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2019-11-6
结帖率:100%
  已结贴   问题点数:20  回复次数:4   
用公式π/4≈1-1/3+1/5……求π的近似值,要求直到最后一项的绝对值小于0.000001为止。

#include<stdio.h>
#include<math.h>
int main()
{
    int n;
    double i,sum,pi;
    n=1;
    i=1.0;
    sum=0.0;
    while(fabs(i/n)>=1e-6)
    {
        sum=sum+i/n;
        n=n+2;
        i=-i;
    }
    pi=4*sum;
    printf("pi=%10.4d\n",pi);
    return 0;
}
这个程序哪里错了?
搜索更多相关主题的帖子: 小于 公式 绝对值 sum π 
2019-11-07 12:29
纯蓝之刃
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:3
帖 子:115
专家分:535
注 册:2019-7-29
  得分:7 
printf("pi=%10.4d\n",pi);

printf("pi=%10.4lf\n",pi);应该使用lf也就是double型进行打印输出。

[此贴子已经被作者于2019-11-7 12:59编辑过]

2019-11-07 12:50
自学的数学
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:27
帖 子:745
专家分:3094
注 册:2017-11-15
  得分:7 
回复 2楼 纯蓝之刃
你这样也不对,小数点后的位数不够,也就是精度不够,应该是:
printf("pi=%10.6lf\n",pi);
2019-11-07 13:38
纯蓝之刃
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:3
帖 子:115
专家分:535
注 册:2019-7-29
  得分:0 
回复 3楼 自学的数学
可能人家只是想保留四位小数呢,这样又没有错误,当它想保留六位的时候自己修改就是了。
就像一个函数如果写成abc(int d)。那么不管人家参数d有没有使用,这样都是正确的,顶多提醒人家一下。
如果写成abc(),那么就需要考虑一下是不是楼主漏掉了什么,考虑是填入void还是其他的了。
我是这么认为的,不对之处请多指教。
2019-11-07 13:55
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:328
帖 子:6778
专家分:39361
注 册:2011-1-18
  得分:7 
每多一个无意义的变量,代码可读性就差一些
程序代码:
#include <stdio.h>

int main( void )
{
    double pi_4 = 0;
    for( int i=1000001; i>0; i-=2 )
        pi_4 += (2.0-i%4)/i;
    printf( "%.4f\n", pi_4*4 );
}

2019-11-07 16:39
快速回复:用公式π/4≈1-1/3+1/5……求π的近似值,要求直到最后一项的绝对值小 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.054998 second(s), 8 queries.
Copyright©2004-2019, BCCN.NET, All Rights Reserved