公式求π C语言

来源:百度知道 编辑:UC知道 时间:2024/06/07 17:07:04
公式求π(圆周率) C语言 公式如下:
π/4=1-1/3+1/5-1/7+1/9........
我的答案:
#include<stdio.h>
void main()
{
float pi=0;
int n=1,t=1;
do
{
pi=pi+t/n;
n=n+2;
t=-t;
}
while(pi<1e-6);
printf("%f",pi*4);
}

结果怎么老是4.000000呢???高手帮忙解决一下吧..谢谢了..

数据类型无所谓,运算结果可以通过强制类型转换得到。

算法方面,pi<1e-6的条件判断是错的,π/4可能小于1的-6次方么?

这句用来控制算法精度,应该是1/3,1/5,1/7这些值大于1的-6次方的时候继续运算,否则退出循环。

程序改动如下:

#include <stdio.h>
#include <math.h>
void main()
{
double pi=0.0;
int n=1,t=1;
double tmp = 0;
do
{
tmp=t>0?((double)t/n):((double)-t/n);
pi=pi+(double)t/n;
n=n+2;
t=-t;
} while(tmp>1e-7);
printf("%.10f",pi*4);
}

因为t和n都是int型,t/n的结果也是int型,小数部分丢掉了,把t定义成float型就没问题了

你好:

因为t n都为整形,计算结果也只会是整形,定义t为float;
而且while(pi<1e-6) 也应该改成while(fabs(t*1.0/n)>1e-6)才对,fabs()函数主要功能就是取绝对值.

修改程序如下:
#include<stdio.h>
#include <math.h>
void main()
{
float pi=0,t=1;
int n=1;
do
{
pi=pi+t/n;
n=n+2;
t=-t;
}
while(fabs(t*1.0/n)>1e-6) ;
printf("%f",pi*4);

}

全胡咧咧