Почему Math.cos(90 * Math.PI/180) дает 6.123031769111... и не равен нулю?
Я конвертирую градусы в радианы (градусы * Math.PI/180), но почему следующее:
Math.cos(90 * Math.PI/180)
выход 6.123031769111... и не равен нулю
Я пытаюсь выполнить 2D-поворот, использует матрицы, и результаты полностью выходят из строя.
Ответ 1
Вывод
Math.cos(90 * Math.PI/180)
является
6.123031769111886e-17
Обратите внимание на e-17 в конце, что означает, что это число равно 6.123 x 10 -17. Это число, так исчезающе близкое к 0, что оно эффективно 0. Причина, по которой он не является тождественно 0, связан с ошибками округления в двойном формате IEEE-754, который мешает вам получать точное представление & pi;/2 и вызывает ошибки минимального округления при расчете косинуса.
Кстати, я был очень удивлен, когда результат вернулся с 6! Это только после того, как я посмотрел на самый конец, что все стало иметь смысл.
Надеюсь, это поможет!
Ответ 2
6.123233995736766e-17
- научное обозначение для очень небольшого числа, близкого к нулю. Это не совсем нулевое из-за ошибок округления и т.д.
Ответ 3
6.123233995736766e-17 очень близок к нулю. Просто округлите число.