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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
PazDim
5 / 5 / 0
Регистрация: 08.08.2011
Сообщений: 93
#1

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

09.04.2013, 13:31. Просмотров 300. Ответов 1
Метки нет (Все метки)

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

Точка и запятая в вещественных числах - C++ Qt
Такие непонятки с точкой и запятой : sprintf(dest, "%0*.*f", 8, 4, 2.5 ); std::cout<<dest; std::cout<<(int)dest; В...

Как заставить выводить точку в вещественных числах? - C# MVC
JavaScript-код требует точки в качестве разделителей дробной и целой частей. Как формат настроить? Я не могу передать значения в массив...

Определить количество цифр в введенных числах и вывести на экран сколько цифр в первом и втором числах - Pascal
ввести 2 числа, определить количество цифр в введеных числах и вывести на экран сколько цифр в первом и втором числах

Перевод вещественных из системы в систему, сравнение вещественных - C++
Есть задача: задаются в восьмеричной системе число а, число b, число h, нужно отобразить все числа от a до b с шагом h в восьмеричном и...

Погрешности! - C++
Всем Привет! Вопрос точности вычислений и преобразований погрешности!Т.е возник такой вопрос,не могу создать программу которая,должна...

Погрешности - Численные методы
Доброго дня. Найти предельные абсолютные и относительные погрешности чисел, если они имеют только верные цифры: а) в узком смысле; б)...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Croessmah
Эксперт CЭксперт С++
13228 / 7500 / 845
Регистрация: 27.09.2012
Сообщений: 18,419
Записей в блоге: 3
Завершенные тесты: 1
09.04.2013, 13:38 #2
сравнивайте с определенной точностью
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.04.2013, 13:38
Привет! Вот еще темы с ответами:

Погрешности - Физика
Какой формулой найти абсолютную погрешность и относительную

Задача на погрешности - Физика
Здравствуйте. Есть задача: Ну решал так. l=12 м l1=15 м l2= 50 см \Delta {l}_{1}=0.01 \Delta {l}_{1}=0.001

Погрешности чисел - C++
Помогите, пожалуйста! В С++ объявляю переменную: double a=0.1; а компьютер запоминает вместо числа 0.1 число 0.10000000001 ...

3D график погрешности - Matlab
Как погрешность может быть 100? clear all; x=1:1:29; y=0.2:0.1:3; Z=zeros(length(x),length(y)); P=zeros(length(x),length(y)); ...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru