gpt4 book ai didi

c - 函数和浮点比较

转载 作者:太空宇宙 更新时间:2023-11-04 00:19:03 25 4
gpt4 key购买 nike

#include<stdio.h>
#include<stdlib.h>
#define abs(a) ((a)>0 ? a: -a)
#define eps_sqrt 0.00000000000001
#define it 100

float sqrt(float x)
/*The Square Root Function using the Newton's Method*/
{
int it_sqrt=0;
float a_sqrt = x/2;
while ((abs((a_sqrt*a_sqrt)-(x))>=eps_sqrt) && (2.0*a_sqrt != 0) && (it_sqrt<=it))
{
a_sqrt = a_sqrt - ((a_sqrt*a_sqrt)-(x)/(2.0*a_sqrt));
it_sqrt++;
}
return a_sqrt;
}

int main()
{
printf("%.5f\n", sqrt(5));
system ("pause");
}

我尝试使用牛顿迭代法在 Python 上求平方根,效果非常好。我是 C 的新手,我不明白为什么这个函数对我不起作用。每当我运行它时,它都会返回“-1.#INF0A”任何帮助将不胜感激。


编辑:我尝试将 eps 更改为 0.000001 但它也没有用。

最佳答案

改变这一行:

                a_sqrt = a_sqrt - ((a_sqrt*a_sqrt)-(x)/(2.0*a_sqrt));

                a_sqrt = a_sqrt - ((a_sqrt*a_sqrt - x)/(2.0*a_sqrt));

对我有用。

关于c - 函数和浮点比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10435099/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com