У меня есть следующая функция для преобразования из радианов в градусы:
float DegreesToRadians(float degrees) {
return degrees * (PI / 180);
}
Когда я сейчас делаю:
sinf(DegreesToRadians(90));
Это возвращает 1, как и ожидалось. Но, когда я делаю:
sinf(DegreesToRadians(180));
Он возвращает -8.74228e-08. Кто-нибудь знает, почему это происходит? (Это происходит и с cosf, но в обратном порядке: 180 -> -1; 90 -> -8.74228e-08)
PI / 180
. - person Andy Turner   schedule 25.07.2021float
имеет ограниченную точность. Попробуйте сdouble
, получится что-то около е-16. - person Bob__   schedule 25.07.2021M_PI
; - person enhzflep   schedule 25.07.2021