Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вещественные числа [D7, WinXP]


Vladimir88 ©   (2005-10-05 16:04:00) 

Как правильно сравнивать вещественные числа


begin...end   (2005-10-05 18:40:00) [1]

> злобная танька   (05.10.05 18:36) [5]

В [3] приведён пример ТОЧНОГО сравнения двух вещественных чисел одинакового формата -- сравнения их внутренних представлений (содержимого переменных в памяти).


злобная танька   (2005-10-05 18:36:00) [2]

гм.. можно вопрос?
А зачем Такие(@Штуки)^? что они делают?
чем плох вариант [2]?


TUser   (2005-10-05 17:34:00) [3]

> Digitman ©   (05.10.05 17:06) [3]

Не очень понятно, что имеется в виду.

> если искл-но на предмет равенства

Если равенство понимать по-человечески (равны с точностью до ошибки вычислений с плав. точкой), то не сработает
var s1, s2: single;
begin
 s1:=0;
 s2:=s1 + 1e-16;
 if PSingle(@s1)^ = PSingle(@s2)^ then
   writeln ('equal')
   else writeln ('not equal');
end.


Digitman   (2005-10-05 17:06:00) [4]


> Как правильно сравнивать вещественные числа


на какой предмет ?

если искл-но на предмет равенства. то

PSomeRealTypeValue(@Value1)^ = PSomeRealTypeValue(@Value2)^


Jeer   (2005-10-05 17:02:00) [5]

например:

EPS: Double = 1E-6;  { error for compare float numbers}

function IsFloatEqu_(f1, f2: Extended): boolean;
begin
 Result := (abs(f1-f2) < EPS);
end;


MBo   (2005-10-05 16:10:00) [6]

CompareValue из Math


Наверх

Титульная страница Поиск, карта сайта Написать письмо