Мой код довольно прост, и только 1 строка вызывает проблему:
np.tan(np.radians(rotation))
Вместо ожидаемого результата для rotation = 45
как 1, я получаю 0.9999999999999999. Я понимаю, что 0 и тонна 9 равны 1. В моем случае, однако, это похоже на то, что определенно будет создаваться в течение итераций.
Что вызывает ошибку с плавающей запятой: np.tan
или np.radians
, и как я могу получить корректную работу функции задачи независимо от погрешностей с плавающей запятой?
Edit:
Я должен уточнить, что я знаком с неточностями с плавающей запятой. Меня беспокоит то, что по мере того, как это число умножается, добавляется и сравнивается, ошибка 1e-6 внезапно становится ощутимой. Обычно я мог безопасно игнорировать проблемы с плавающей запятой, но теперь я гораздо больше обеспокоен ростом ошибок. Я хотел бы уменьшить вероятность такой ошибки.
Редактировать 2:
Мое текущее решение - просто округлить до 8 десятичных знаков, потому что это, скорее всего, достаточно. Это своего рода временное решение, потому что я бы предпочел способ обойти десятичные представления IEEE.