注册 登录
编程论坛 C语言论坛

用公式π/4≈1-1/3+1/5……求π的近似值,要求直到最后一项的绝对值小于0.000001为止。

li1346819486 发布于 2019-11-07 12:29, 6358 次点击

#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;
}
这个程序哪里错了?
5 回复
#2
纯蓝之刃2019-11-07 12:50
printf("pi=%10.4d\n",pi);

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

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

#3
自学的数学2019-11-07 13:38
回复 2楼 纯蓝之刃
你这样也不对,小数点后的位数不够,也就是精度不够,应该是:
printf("pi=%10.6lf\n",pi);
#4
纯蓝之刃2019-11-07 13:55
回复 3楼 自学的数学
可能人家只是想保留四位小数呢,这样又没有错误,当它想保留六位的时候自己修改就是了。
就像一个函数如果写成abc(int d)。那么不管人家参数d有没有使用,这样都是正确的,顶多提醒人家一下。
如果写成abc(),那么就需要考虑一下是不是楼主漏掉了什么,考虑是填入void还是其他的了。
我是这么认为的,不对之处请多指教。
#5
rjsp2019-11-07 16:39
每多一个无意义的变量,代码可读性就差一些
程序代码:
#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 );
}

#6
cmynb6662021-07-03 12:20
回复 5楼 rjsp
大哥,能讲讲思路吗,我看了一会子没看懂
1