注册 登录
编程论坛 C语言论坛

这里为什么用double不用int

黑暗骑士5D 发布于 2019-11-25 14:18, 1229 次点击
本题要求编写程序,计算序列 2/1+3/2+5/3+8/5+... 的前N项之和。注意该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子。

输入格式:
输入在一行中给出一个正整数N。

输出格式:
在一行中输出部分和的值,精确到小数点后两位。题目保证计算结果不超过双精度范围。

输入样例:
20
输出样例:
32.66

int main()
{
 double a=1,b=1;
 double Sn=0;
 int i,N;
 scanf("%d",&N);
 for(i=0;i<N;i++)
 {
 a=a+b;
 b=a-b;
 Sn+=a*1.0/b;
 }
 printf("%.2lf\n",Sn);
 return 0;
 }
如果把a,b换成int就是错的,为什么呢?ab不都是整数吗
3 回复
#2
rjsp2019-11-25 14:44
如果把a,b换成int就是错的,为什么呢?
其他不看,仅这一句话,肯定是因为 溢出 嘛
#3
万致远醉帥2020-03-24 14:21
回复 2楼 rjsp
+1,int是到2的31次方-1。
#4
maomao123452020-03-24 17:48
c++好像是可以的
1