Я понимаю, что cos (); в C ++ использует радианы правильно .. и вы можете получить радианы с помощью ..
(angle * PI ) / 180;
Так почему же
float value = cos( (90 * PI / 180 ); // == 6.1 etc... and not 0?
Если я использую научный калькулятор в Windows для cos(90)
Я получаю ноль. Тем не менее, как эксперимент, когда я толкаю cosh(90)
, Я получаю то же значение 6.1 и т.д …, которое дал мне вызов функции в C ++.
Есть идеи, что происходит? Вот мой код, как сейчас …
В основном я спрашиваю, почему cos(90 degrees)
в C ++ возвращается с тем же номером, что и делать cosh(90)
на калькуляторе windows. не cos(90 degrees)
должен быть равен нулю в любом случае?
Таким образом, вы на самом деле не получили 6.1 (значение косинуса / синуса больше 1 возможно только для некоторых комплексных чисел), но 6.1 * 10 ^ -17. Дело в том, что числа с плавающей точкой не являются точными значениями (по природе — так работает представление base-2), а математические функции не возвращают точных значений — они используют различные формулы аппроксимации для вычисления значения — никогда не ожидайте, что они будут точными.
Других решений пока нет …