Blizzard-man aka jedi
Джедай Миха
В текущей работе столкнулся с интересным случаем, когда погрешность в 14м знаке после запятой "всплыла" до целой части. Есть у нас базовые объекты: точки, прямые, ... На них выполняется некоторый расчёт. В версии A получаем -0.90788749496088039, а в версии B -0.64266673326407586. Вопрос, откуда такая ошибка? Вот оказывается, что ошибка берётся из-за того, что в версии B геометрия хранится в некотором пространстве, переход в который требует масштабирования а в версии A - не требует. Коэффициент масштабирования в пространство равен 0.001 (хотя может и меняться). Соответственно, обратный - 1000. Проблема заключается в том, что a * 0.001 * 1000 = b и abs (a - b) > 1e-14. Дальше эта ошибка поднимается не очень устойчивыми к погрешностям алгоритмами - и вот результат.