Function 试图计算一个更接近e的公式,但程序就是不起作用

Function 试图计算一个更接近e的公式,但程序就是不起作用,function,math,Function,Math,Im写了一个代码来计算这个公式((2*x+1)/(2*x-1))^随着x的增加,这个表达式越来越接近e=2.7182818。当这个表达式和e之间的差值小于.000001时,它将退出循环并显示x是什么。问题是,首先它会计算错误,然后当我进行一些调整时,循环开始永远继续。 感谢您在advanced中的帮助 #include <stdio.h> #include <math.h> int main(){ int x; float z,y; prin

Im写了一个代码来计算这个公式((2*x+1)/(2*x-1))^随着x的增加,这个表达式越来越接近e=2.7182818。当这个表达式和e之间的差值小于.000001时,它将退出循环并显示x是什么。问题是,首先它会计算错误,然后当我进行一些调整时,循环开始永远继续。 感谢您在advanced中的帮助

#include <stdio.h>
#include <math.h>

int main(){

    int x;
    float z,y;

    printf("X's value       Absolute Difference\n");
    x=1;
    y=(2*x+1)/(2*x-1);
    z=fabsf(expf(1)-pow(y,x));

    for(x=2;z>0.000001;++x){
        y=(2*x+1)/(2*x-1);
        z=fabsf(expf(1)-pow(y,x));
        printf("%d               %.7f\n",x,z);
    }
    printf("The number in which is closest to e is %d\n",x);
    printf("%.7f             %.7f\n",expf(1),pow(y,x));

     return(0);

}
#包括
#包括
int main(){
int x;
浮动z,y;
printf(“X的值绝对差值\n”);
x=1;
y=(2*x+1)/(2*x-1);
z=fabsf(expf(1)-pow(y,x));
对于(x=2;z>0.000001;++x){
y=(2*x+1)/(2*x-1);
z=fabsf(expf(1)-pow(y,x));
printf(“%d%.7f\n”,x,z);
}
printf(“最接近e的数字是%d\n”,x);
printf(“%.7f%.7f\n”,expf(1),pow(y,x));
返回(0);
}
y=(2*x+1)/(2*x-1)
更改为
y=1.*(2*x+1)/(2*x-1)

否则,
y
将被四舍五入为1,您将陷入无限循环。要查看这一点,只需在每次迭代时打印
y

printf("%d               %.7f   %.7f\n",x,z, y);
                                ^^^^         ^

我可以问一下你为什么这么做吗…这个计划成功了,谢谢!但我想知道你为什么把它改成y=1.*(2*x+1)/(2*x-1)