#include<stdio.h>
int main(){
int n,i,j=1;
double d=1;
scanf("%d",&n);
if (n<=1000){
for(i=1;i<=n;i++){
j=j*i;
d=1.0/j+d;//d=1/j+d;是错的 两个整数相处不会得到一个小数会向下进行取整
}
printf("%.8f",d);
}
return 0;
}
求助一下 当n过大之后怎么解决精度不够数据溢出了
#include<stdio.h>
int main(){
int n,i;
double d=1,j=1;
scanf("%d",&n);
if (n<=1000){
for(i=1;i<=n;i++){
j=j*i;//懂了 j是一个存储阶乘的值 如果用int 数据会溢出 所以需要将j设置为double
d=1.0/j+d;//d=1/j+d;是错的 两个整数相处不会得到一个小数会向下进行取整
}
printf("%.8f",d);
}
return 0;
} //问题已解决