在下面这个程序 , 从13开始数字开始偏移,不是很准确。
#include <stdio.h>
int main()
{
float Sn=0;
int k;
long long r=1;
scanf("%d",&k);
while(Sn<=k)
{
Sn = (1/(1.0*r)+Sn);
r++;
}
r--;
printf("%lld",r);
return 0;
}
对于下面这个程序来说,double保持了结果的精确性。
#include <stdio.h>
int main()
{
double Sn=0;
int k;
long long r=1;
scanf("%d",&k);
while(Sn<=k)
{
Sn = (1/(1.0*r)+Sn);
r++;
}
r--;
printf("%lld",r);
return 0;
}
float来说,传输速度比较慢,但是精度很是优秀,超过10次的需要精度的运算,必须要使用double(必须在保险的方面)。 flaot 来说低于10次可以使用来着。