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 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题