C 计算e^x的值
我需要计算e^x的值。循环是无穷大的,当我得到精度0.001时应该停止,但我不知道如何得到这个精度C 计算e^x的值,c,sum,infinite-loop,precision,C,Sum,Infinite Loop,Precision,我需要计算e^x的值。循环是无穷大的,当我得到精度0.001时应该停止,但我不知道如何得到这个精度 float exp(float x){ float ex=1,precision=0.000,powX=1.0,fat=1.0; int partInt; int i,j; for(i=1; precision!= 0.001; i++){ for(j=1; j<=i; j++){ powX *= x;
float exp(float x){
float ex=1,precision=0.000,powX=1.0,fat=1.0;
int partInt;
int i,j;
for(i=1; precision!= 0.001; i++){
for(j=1; j<=i; j++){
powX *= x;
fat *=j;
}
ex += powX/fat;
partInt = ex; // like a cast to integer
precision= ex - partInt; // get the precision
//printf("%f %f %f %f\n",powX,fat,precision,ex);
powX = fat = 1.0;
}
return ex;
}
int main(){
printf("%f",exp(2));
return 0;
}
float exp(float x){
浮点数ex=1,精度=0.000,功率=1.0,fat=1.0;
内部部分;
int i,j;
对于(i=1;精度!=0.001;i++){
对于代码中的(j=1;j,精度
在选中时始终为0
,因为您将ex
的值赋给partInt
,然后减去它们
您可以将每个循环的结果存储在一个变量中,然后将其与下一个循环的结果进行比较。当它们之间的差异小于0.001
时,停止循环。您可以使用double prev
跟踪上一次迭代产生的结果。当abs(prev-ex)时停止
精度不太可能完全等于0.001
,不是吗?