我正在编写代码以使用 Newton–Raphson 方法计算数字的平方根,但无法获得正确的输出。
当我使用任何输入运行这段代码时,我得到的结果是 0.000003,没有任何错误或警报。
当我将所有 double
关键字更改为 float
时,它可以正常工作。
double square(double n)
{
register int i;
double x = 0.1;
for (i = 1; i <= 15; i++)
x -= ((x * x - n) / (2 * x));
return x;
}
int main()
{
double n;
system("cls");
printf("enter a num : ");
scanf("%f",&n);
printf("\n square is : %f",square(n));
getch();
return 0;
}
最佳答案
double n;
scanf("%f",&n);
这要求 scanf 读取一个 float 并将其放在为 double 保留的空间中。
不要那样做
要么要求float换一个为float预留的空间
float n;
if (scanf("%f", &n) != 1) /* error */;
或者要求双人间以获得为双人间预留的空间
double n;
if (scanf("%lf", &n) != 1) /* error */;
关于c - 为什么这个 C 函数(求 n 的平方根的牛顿拉夫逊法)不能正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57035800/