# include<stdio.h>
double pi(double eps)
{
int i=1;
double t=1;
while(i<eps)
{
t=i/3.0 ;
i++;
}
return t;
}
main()
{
double p,eps;
scanf("%lf",&eps);
p=pi(eps);
printf("%lf",p);
getch();
}
结果
结果应该是0,因为i是整数,怎么会是0.333333?????
int i=1;
double t=1;
while(i<eps)//当i=1小于eps=2.0,循环条件成立,执行循环。i在循环体内变成2之后,循环条件不成立,不执行循环
{
t=i/3.0 ;//t=1/3.0=0.333333
i++;//i=2
}
return t;//返回0.333333
所以结果是0.333333。
整数也能和浮点数比较大小的。
当将C语言中的除法结果赋给整数的时候,将会丢弃小数部分,造成取商丢弃余数的现象。
如果赋给一个双精度类型,就不一定了。
所以你可以试试将t的类型改为int。
我没有环境,不知道运行结果如何,但理论上应该是0。
另外,你的程序里,t的值和i是不是整数有什么关系?与整数同浮点数比较大小有什么关系?
我没搞懂……
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息