cos 返回错误值?
我对 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
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.
cos(PI/2) = 0,而不是 1。
cos(PI/2) = 0, not 1.
我不知道你传递的是弧度还是度数......
但你的 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?)