pi/4=1/1-1/3+1/5-1/7+1/9-.......

来源:百度知道 编辑:UC知道 时间:2024/06/06 12:47:05
最后一项绝对值小于1/10000停止
#include "math.h"
main()
{float pi=0,t=1.0;
int n=1,s=1;
while(fabs(t)>=1e-4)
{pi=pi+t;n=n+2;s=-s;t=s/n;}
pi=pi*4;
printf("%f",pi);
}
TC没有报错,但是答案总是为4.00。。。。而不是3.14.。。。
不知道为什么??

好了,s/n都是整数,结果为0,所以t一下子从1变为0

#include "math.h"
#include <stdio.h>
main()
{float pi=0,t=1.0;
int n=1,s=1;
while(fabs(t)>=1e-4)
{pi=pi+t;n=n+2;s=-s;t=(float)s/n;}
pi=pi*4;
printf("%f",pi);
}

类型转换中产生的数据丢失

t=(float)s/n;
n=n+2;
s=-s;
//printf("t=:%f\n",t);
pi=pi+t;

int n=1,s=1;
改为 float n=1,s=1;
即可。
因为你的int使得除后都成0了。

t=s/n,t虽然是float,但s,n都是int,除完结果为0,t就为0了