c语言求Π/4约等于1-1/3+1/5-1/7+直到某一项小于10的-6次方为止,
#include <stdio.h>
int main()
{
int i,sign=-1,sum=0;
double fen,t;
for(i=1;fen>=1.0e-06;i++,i++)
{
sign=-sign,fen=1/i;
sum=sign/i+sum;
}
t=sum*4;
printf("t=%f",t);
return 0;
}
(1)sum是int类型,在for中计算的时候会丢失小数
(2)fen没有初始化就在for中使用了。
代码修改如下:
#include <stdio.h>
int main()
{
int i,sign=-1;
double sum=0; //修改1 sum改成double类型
double fen,t;
for(i=1;1.0/i>=1.0e-06;i+=2)// 第二个条件改成1.0/i>1.0e-06
{
sign=-sign;
fen=1.0/i;
sum=sign*fen+sum; //修改
}
t=sum*4;
printf("t=%f",t);
return 0;
}
你之前定义的int类型sign,在sign/i时会发生小数位丢失
#include <stdio.h>
int main()
{
float i,sign=-1,sum=0;
double t;
for(i=1;1.0/i>=1e-06;i+=2)
{
sum-=1/i*sign;
sign=-sign;
}
t=sum*4;
printf("t=%f",t);
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!