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

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

Значения с плавающей точкой [D7, XP]


ttt ©   (2013-03-22 14:28:00) 

Добрый день.

Лучше покажу примером.
s: single;
s:= 0.8;
if s <> 0.8 then ShowMessage(FloatToStr(s));

На деле выдает "0.800000011920929". Вопрос, скорее, не в том, чтобы убрать эти "11920929", а в том, как правильно сравнивать значения.
Подскажите, расскажите. :)


O'ShinW   (2013-03-22 15:26:00) [1]

http://www.delphikingdom.com/asp/viewitem.asp?catalogid=374


Ega23   (2013-03-22 14:39:00) [2]

А вообще

|A-B| <= Epsilon

Epsilon - больше нуля, значение - выбирай исходя из задачи


Inovet   (2013-03-22 14:38:00) [3]

Нельзя плавающие типы сравнивать на точное равенство, надо
abs(a-b) < epsilon


Ega23   (2013-03-22 14:36:00) [4]

uses Math;

SameValue + F1


Наверх

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