c语言求C(n.m)当输入n=200,m=1时出现错误,怎么改让他求得大些
#include<stdio.h>
double fact(double k);
int main(void)
{
double n,m;
printf("Enter n,m(n>m)");
scanf("%lf%lf",&n,&m);
if(n<m)
printf("EOOr");
else{
printf("C(%f qu %f)=%f",n,m,fact(n)/(fact(m)*fact(n-m)));
}
return 0;
}
double fact(double k){
double result=1,i;
for(i=1;i<=k;i++){
result=result*i;
}
return result;
}
这个涉及一个基本概念,你的函数定义
double fact(double k)
而double的范围为
-1.79E+308 ~ +1.79E+308。
200!的值为7.89 E+374
已超出double能表示的范围了
你若要更高的精度范围,你必须用大数运算了,这个有点复杂,可能超出你理解的范围了
热门标签: