cos返回错误的值?

时间:2009-12-06 13:49:49

标签: c++ cmath

我对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)。

我错过了一些非常基本和简单的东西......?

3 个答案:

答案 0 :(得分:23)

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

答案 1 :(得分:2)

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

答案 2 :(得分:1)

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