IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным. В описании темы указываем язык!!!

> Сравнение вещественных чисел, С++
first_day
сообщение 28.04.2008 19:44
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 86
Пол: Мужской
Реальное имя: Илья

Репутация: -  1  +


Как корректно провести сравнение двух вещественных чисел? Вот например всегда ли здесь будет производиться корректное сравнение?

min_d=-1;
for(pl=x[i];pl<=x[i+1];pl+=0.01)
{
d1=dist(x[i],pl,y[i],0);
d2=dist(x[i+1],pl,y[i+1],0);
if (min_d==-1 || d1+d2<min_d)
{
min_d=d1+d2;
min_pl=pl;
}
}
// dist - функция, возвращающая значение double, все переменные (кроме i - int) и массивы так же типа double


Или может как-то погрешность в вычислениях нужно учитывать?

Сообщение отредактировано: first_day - 28.04.2008 21:06


--------------------
Я бы изменил мир, да Бог не дает исходников.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 28.04.2008 20:09
Сообщение #2


Гость






Вообще нежелательно применять операции "==" и "!=" к вещественным типам. Лучше
if (min_d < 0 || d1+d2 < min_d)
(поскольку расстояние, насколько я понимаю, быть отрицательным не может)

А вот операции "меньше" и "больше" должны работать корректно...
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 19.07.2025 16:49
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"