cos 返回错误值?

发布于 2024-08-13 05:30:20 字数 464 浏览 7 评论 0原文

我对 cmath/math.h 的标准 cos 函数有一个奇怪的问题。显然在某些情况下它会返回错误或简单的未定义值。

#include <cmath>
#include <iostream>

int main()
{
 double foo = 8.0 * 0.19634955; // 1.5707964
 double bla = std::cos(foo);    // should be 0.9996242168245
 std::cout << bla << std::endl; // cos returns -7.32051e-008

 return 0;
}

例如,如果 cos 的输入值为 1.5707964,则 cos 返回 -7.32051e-008(使用双精度数时,使用浮点数时为 -4.XYZe-009)。

我在这里错过了一些非常基本和简单的东西吗?

I have a strange problem with the standard cos function of cmath/math.h. Apparently under some circumstances it returns a wrong or simply undefined value.

#include <cmath>
#include <iostream>

int main()
{
 double foo = 8.0 * 0.19634955; // 1.5707964
 double bla = std::cos(foo);    // should be 0.9996242168245
 std::cout << bla << std::endl; // cos returns -7.32051e-008

 return 0;
}

If the input value for cos is 1.5707964 for example, cos returns -7.32051e-008 (when using doubles, with floats it's -4.XYZe-009).

Am I missing something really basic and simple here...?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

囍笑 2024-08-20 05:30:21

cos 需要弧度,你给它度数。将您的输入值乘以 3.14159/180,您将得到正确的答案。

cos expects radians, you are giving it degrees. Multiply your input value by 3.14159/180, and you will get the right answer.

娇俏 2024-08-20 05:30:21

cos(PI/2) = 0,而不是 1。

cos(PI/2) = 0, not 1.

玩物 2024-08-20 05:30:21

我不知道你传递的是弧度还是度数......
但你的 foo 值接近 PI/2。
所以你得到 cos(foo) = 0 和 sin(foo) = 1 (你期望什么?)

I don't know if you're passing radian or degrees...
But your value of foo is near PI/2.
So you get cos(foo) = 0 and sin(foo) = 1 (what you expected?)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文