gpt4 book ai didi

c - 知道为什么 x 变为 0 然后为 nan

转载 作者:行者123 更新时间:2023-11-30 18:27:34 26 4
gpt4 key购买 nike

我制作了一个新的#define g(x),当我打印 x 并且 num 是 number int Greater(>) of 2 时,它无法按预期工作

我尝试打印我的#define g(x)但没有成功

代码如下:

#define g(x,num) 1/3*(2 * x + (num / x))
#define f(x,num) x*x - num
#define var 1E-12 //(1E-12 = 10^-12)

double x;
int i;
double num;

double srt(double num) {
x = num;


for(i; abs(f(x,num)) > var ;i++) {


x = g(x,num);
printf ("x: %f\n", x);

}
printf ("counter %d\n", i);
return x;
}

int main(int argc, char** argv) {

printf("give number\n");
scanf("%lf", &num);
printf ("your number is num: %lf\n", num);
printf("srt : %lf", srt(num));
return 0;
}

最佳答案

问题出在你的宏中:

#define g(x,num) 1/3*(2 * x + (num / x))

在 C 中,1/3 被计算为整数除法,因此将始终计算为 0。为了解决这个问题,至少应该将一个文字设置为 double 而不是 int:

#define g(x,num) 1.0/3.0*(2.0*x + (num/x))

关于c - 知道为什么 x 变为 0 然后为 nan,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54241935/

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