分数序列求和

Boran+ 2015-10-20 11:38:19
#include<stdio.h>
int main()
{
int i,n=30;
double a=1,b=2,s=0,t; //a是分子,b是分母,s是和
for(i=1;i<=n;i++)
{
s=s+a/b;
t=b;
b=a+b;
a=t;
}
printf("sum=%16.10f\n",s);
return 0;
}


为什么必须要用double来定义a和b啊?
a和b不应该是整数型吗?
如果用int来定义结果就不正确,这是为什么啊?
...全文
590 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ronal7do 2015-10-23
  • 打赏
  • 举报
回复
引用 7 楼 qq_31521965 的回复:
[quote=引用 3 楼 llq108 的回复:] 如果a和b都是整数,值分别是1和2,那相除出来的结果是0。但其实结果应该是0.5,所以要用浮点数来表示。
好像就是这样..意思就是其实也可以定义a b为整数型 只要将其改变形态就行啦吗? 就像2/4是整数 而2/4.0 是浮点数这样吗?[/quote]

int a = 2,b = 4;
float c = a / float(b);
//你这样得到的c就是0.5了
Boran+ 2015-10-23
  • 打赏
  • 举报
回复
引用 3 楼 llq108 的回复:
如果a和b都是整数,值分别是1和2,那相除出来的结果是0。但其实结果应该是0.5,所以要用浮点数来表示。
好像就是这样..意思就是其实也可以定义a b为整数型 只要将其改变形态就行啦吗? 就像2/4是整数 而2/4.0 是浮点数这样吗?
wodian! 2015-10-21
  • 打赏
  • 举报
回复
分数的结果一般有小数点,结果为浮点型,如果定义为整型,得不到结果。
ronal7do 2015-10-21
  • 打赏
  • 举报
回复
如果a和b都是整数,值分别是1和2,那相除出来的结果是0。但其实结果应该是0.5,所以要用浮点数来表示。
夜里的柚子 2015-10-21
  • 打赏
  • 举报
回复
这里边也是有精度问题的~应该先通分。
Chwetion 2015-10-21
  • 打赏
  • 举报
回复
两个整形除出来还是整形啊
lm_whales 2015-10-20
  • 打赏
  • 举报
回复
可以啊,只是不那么方便,但是更加准确, 毕竟分数是整数相除的结果,不是实数相除的结果。

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧