C 计算e^x的值

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;

我需要计算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;
            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
,不是吗?