потому что возвращает неправильные значения? - PullRequest
3 голосов
/ 06 декабря 2009

У меня странная проблема со стандартной функцией cos в cmath / math.h. Очевидно, при некоторых обстоятельствах он возвращает неправильное или просто неопределенное значение.

#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 (при использовании double, с плавающей запятой это -4.XYZe-009).

Я что, упускаю что-то действительно простое и простое ...?

Ответы [ 3 ]

23 голосов
/ 06 декабря 2009

потому что ожидает радианы, вы даете ему градусы. Умножьте введенное значение на 3,14159 / 180, и вы получите правильный ответ.

2 голосов
/ 25 июня 2010

cos (PI / 2) = 0, а не 1.

1 голос
/ 06 декабря 2009

Я не знаю, проходите ли вы радианы или градусы ... Но ваша ценность foo близка к PI / 2. Итак, вы получаете cos (foo) = 0 и sin (foo) = 1 (что вы ожидали?)

...