考虑我在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?我的错误在哪里?
[虽然函数返回int
,但该值使用错误的格式说明符%f
而不是%d
打印。
将签名(如果可以的话,还要把名字)改成this之类的东西>>
double cube_root(double x) { ... }
或如果确实需要
int
,则更改格式说明符。