Форум программистов, компьютерный форум CyberForum.ru

Ошибки из-за погрешности в вещественных числах - C++

Восстановить пароль Регистрация
 
PazDim
5 / 5 / 0
Регистрация: 08.08.2011
Сообщений: 93
09.04.2013, 13:31     Ошибки из-за погрешности в вещественных числах #1
Здравствуйте. Пытаюсь написать 3Д движок. Вроде все было замечательно, но появилась проблема: я использую для обозначения координат точек вещественные числа, а у них в младших разрядах скапливается погрешность. Из-за этого не могу нормально отследить состояние, к примеру, вектора скорости: там, где скорость по оси Y должна быть равна нулю(объект на поверхности), на самом деле она равна что-то типа 0.000000000001. Или вот: есть диапазон на оси Х, и нужно проверить, входит ли точка в заданный диапазон(к примеру[-0.4;0.4]). А точка лежит на границе диапазона, и ее координата Х=0.40000008(то есть в диапазон не входит ). Как правильно избегать таких ситуаций? Из второй проблемы вышел растягиванием диапазона на заданную величину погрешности(к примеру, 0.0000001, тогда точка входит в интервал). Но вот как решить первую проблему? Заранее спасибо.
ЗЫ. Сначала использовал float. После обнаружения проблемы перешел на double. Понял, что толку нет, и вернулся к float. Все из-за того, что при написании когда считал значения переменных точными(то есть 0 это 0.0, а не 0.0000000001). В случаях, когда погрешности нет, все работает...
ЗЫЫ. Опыта работы с вещестенными числами не имею... Есть где краткое описание проблем с ними?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.04.2013, 13:31     Ошибки из-за погрешности в вещественных числах
Посмотрите здесь:

C++ Погрешности в определении 0
C++ Погрешности!
вычисление погрешности - циклы. C++
C++ Перевод вещественных из системы в систему, сравнение вещественных
О простых числах! C++
C++ Одинаковые цифры в числах
Расчет погрешности C++
Погрешности чисел C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11809 / 6788 / 767
Регистрация: 27.09.2012
Сообщений: 16,840
Записей в блоге: 2
Завершенные тесты: 1
09.04.2013, 13:38     Ошибки из-за погрешности в вещественных числах #2
сравнивайте с определенной точностью
Yandex
Объявления
09.04.2013, 13:38     Ошибки из-за погрешности в вещественных числах
Ответ Создать тему
Опции темы

Текущее время: 20:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru