使用巴比伦方法计算$ \ sqrt [3] {x} $

问题描述 投票:1回答:1

考虑我在C语言中实现巴比伦方法的尝试:

int sqrt3(int x) {
    double abs_err = 1.0;
    double xold = x;
    double xnew = 0;

    while(abs_err > 1e-8) {
        xnew =  (2 * xold + x/(xold* xold))/3;
        abs_err= xnew-xold;
        if (abs_err < 0) abs_err = -abs_err;
        xold=xnew;
    }
    return xnew;
} 
int main() {
    int a;

    scanf("%d", &a);
    printf(" Result is: %f",sqrt3(a));
    return 0;   
}

x等于27的结果:0.0000?我的错误在哪里?

c implementation
1个回答
0
投票

[虽然函数返回int,但该值使用错误的格式说明符%f而不是%d打印。

将签名(如果可以的话,还要把名字)改成this之类的东西>>

double cube_root(double x) { ... }

或如果确实需要int,则更改格式说明符。

© www.soinside.com 2019 - 2024. All rights reserved.