读书人

数列求和精度有关问题

发布时间: 2012-03-09 16:54:57 作者: rapoo

求助:数列求和精度问题
有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
方法一:main()
{
int n,t,number=20;
float a=2,b=1,s=0;
for(n=1;n<=number;n++)
{s=s+a/b;
t=a;a=a+b;b=t;
printf("sum is %f\n",s);}

getch();}
方法2:#include "stdio.h"
int main()
{int i;
float s,z,n1,m1;
float m[20],n[20];
n[0]=2.0;
m[0]=1.0;
z=n[0]/m[0];
n[1]=n[0]+m[0];
m[1]=n[0];
s=n[1]/m[1];
z=z+s;
for(i=2;i<20;i++)
{n[i]=n[i-1]+n[i-2];
m[i]=n[i-1];
s=n[i]/m[i];

z=z+s;
printf("z=%f\n",z);}
while(1);}
得出的结果分别是:前面几项是一样的,但到了19.715986时出现偏差,另一个结果是19.715988,直到最后结果都不太一样,不知为什么???最终结果一个是32.660259,一个是32.660263????

[解决办法]
可以先通分再计算

读书人网 >C语言

热点推荐