我对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)。
我错过了一些非常基本和简单的东西......?
答案 0 :(得分:23)
cos期望弧度,你给它度数。将您的输入值乘以3.14159 / 180,您将得到正确的答案。
答案 1 :(得分:2)
cos(PI / 2)= 0,而不是1。
答案 2 :(得分:1)
我不知道你是否通过了弧度或度数...... 但是你的foo值接近PI / 2。 所以你得到cos(foo)= 0和sin(foo)= 1(你期望的是什么?)