wei___123 2017-10-09 09:50 采纳率: 75%
浏览 794
已采纳

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

#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

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

  • 写回答

2条回答 默认 最新

  • barry_di 2017-10-10 02:03
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 maple软件,用solve求反函数出现rootof,怎么办?
  • ¥50 汇编语言除法溢出问题
  • ¥65 C++实现删除N个数据列表共有的元素
  • ¥15 Visual Studio问题
  • ¥15 state显示变量是字符串形式,但是仍然红色,无法引用,并显示类型不匹配
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波