求π,代码我都打出来了,但是函数返回时自动取整,搞不懂

#include
#include
int fun(double eps)
{
float pi=0.0,t=1.0,s=1.0,n=1.0;
while((fabs(s))>=eps)
{
pi+=s;
t=n/(2*n+1);
s*=t;
n++;
printf("t=%f\n",t);
printf("s=%f\n",s);
printf("pi=%f\n",pi);
}
pi*=2.0;
printf("pi=====%f\b",pi);
return (float)pi;
}
main()
{
float n,result;
printf("please input precision;\n");
scanf("%f",&n);
result=fun(n);
printf("the pi is %f\n",result);
}

以下是运行结果:
please input precision;
0.01
t=0.333333
s=0.333333
pi=1.000000
t=0.400000
s=0.133333
pi=1.333333
t=0.428571
s=0.057143
pi=1.466667
t=0.444444
s=0.025397
pi=1.523810
t=0.454545
s=0.011544
pi=1.549206
t=0.461538
s=0.005328
pi=1.560750
pi=====3.121501
the pi is 3.000000

π求到最后都是对的,为什么函数返回就自动清除小数点后的了

你这程序有很大问题,首先你的浮点数比较就有问题,while((fabs(s))>=eps) 请上网查阅浮点数如何比较大小,main函数里result=fun(n);接收返回值result是float,然而fun()函数的返回值类型时int, 在fun()函数内,return (float)pi; 貌似你要返回一个float类型的数据,但你的函数声明int fun(double eps)却是要返回int类型。你对函数声明与函数返回值的理解还不行,继续研究吧。

返回值是int直接变类型了