gpt4 book ai didi

c - 为什么输出-1.#IND00 会出现浮点错误?

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

printf("The Angle A Is: %f", (acos((b*b + c*c - a*a)/2*b*c)*180/3.14159265359));

这是一个简单的程序,如果输入了边 a、b、c,则返回角度 A。

我已经检查了三角形是否可能。

if((a+b) <= c || (b+c) <= a || (c+a) <= b)
return 0;

我得到了一些输入的正确输出。对于 1 1 1我得到60 .

但是对于输入 7 7 7我得到-1.#IND00而不是 60我应该得到。

现在我通过阅读another answer才知道它代表不确定的值(特别是除以零的非零数字),但这里情况并非如此。

那么为什么我会收到此错误?

这是完整的程序:

int main()
{
float a, b, c;

printf("Enter The Sides of The Triangle(a, b, c): ");
scanf("%f %f %f", &a, &b, &c);

if((a+b) <= c || (b+c) <= a || (c+a) <= b)
{
printf("Triangle Not Possible.");
return 0;
}

printf("The Angle A Is: %f", (acos((b*b + c*c - a*a)/2*b*c)*180/3.14159265359));
}

最佳答案

你缺少一些括号。而不是编写 acos((b*b + c*c - a*a)/2*b*c)
编写acos((b*b + c*c - a*a)/(2*b*c))。否则,b*c 最终会成为分数的分子,而不是分母,并且您会尝试获取不可能数字的反余弦。

一般来说,当你遇到这样的问题时,简化和分解代码会有所帮助。如果acos返回一个意外的值,那么它一定有一个不正确的参数。因此,计算 acos 的参数,将其放入变量中,打印那个,确保其正确,然后继续。

关于c - 为什么输出-1.#IND00 会出现浮点错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57831615/

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