Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.02.26;
Скачать: CL | DM;

Вниз

Как сравнить два числа, с дробными частями !!!   Найти похожие ветки 

 
kyn66 ©   (2006-02-10 15:15) [0]

Уважаемые мастера,на форме есть компоненты TCurrencyEdit и DBText, которые связаны с полями Float таблицы.
Я пытаюсь сравнить числа, но сравнение работает как-то не адекватно. Правильно сравниваются числа,
у которых нет дробной части. А как мне сравнить дробные. В базе данных числа типа Float имеют
параметр DisplayFormat 0.0. Сравнивая числа, я пытаюсь выделить различные красным цветом.
Однако ожидаемого результата нет. Вот проседура сравнения:

procedure TImpDataFrm.Rep11ADOQueryAfterOpen(DataSet: TDataSet);
const
 FontColors: array[Boolean] of TColor = (clBlack, clRed);
begin
 DBText1.Font.Color  := FontColors[Sum11_1Edit.Value <> Rep11ADOQuerySum1.Value];
 DBText2.Font.Color  := FontColors[Sum11_2Edit.Value <> Rep11ADOQuerySum2.Value];
 DBText3.Font.Color  := FontColors[Sum11_3Edit.Value <> Rep11ADOQuerySum3.Value];
 DBText4.Font.Color  := FontColors[Sum11_4Edit.Value <> Rep11ADOQuerySum4.Value];
 DBText5.Font.Color  := FontColors[Sum11_5Edit.Value <> Rep11ADOQuerySum5.Value];
 DBText6.Font.Color  := FontColors[Sum11_6Edit.Value <> Rep11ADOQuerySum6.Value];
 DBText7.Font.Color  := FontColors[Sum11_7Edit.Value <> Rep11ADOQuerySum7.Value];
 DBText8.Font.Color  := FontColors[Sum11_8Edit.Value <> Rep11ADOQuerySum8.Value];
 DBText9.Font.Color  := FontColors[Sum11_9Edit.Value <> Rep11ADOQuerySum9.Value];
 DBText10.Font.Color  := FontColors[Sum11_10Edit.Value <> Rep11ADOQuerySum10.Value];
 DBText11.Font.Color  := FontColors[Sum11_11Edit.Value <> Rep11ADOQuerySum11.Value];
 DBText12.Font.Color  := FontColors[Sum11_12Edit.Value <> Rep11ADOQuerySum12.Value];
 DBText13.Font.Color  := FontColors[Sum11_13Edit.Value <> Rep11ADOQuerySum13.Value];
 DBText14.Font.Color  := FontColors[Sum11_14Edit.Value <> Rep11ADOQuerySum14.Value];
 DBText15.Font.Color  := FontColors[Sum11_15Edit.Value <> Rep11ADOQuerySum15.Value];
 DBText16.Font.Color  := FontColors[Sum11_16Edit.Value <> Rep11ADOQuerySum16.Value];
 DBText17.Font.Color  := FontColors[Sum11_17Edit.Value <> Rep11ADOQuerySum17.Value];
 DBText18.Font.Color  := FontColors[Sum11_18Edit.Value <> Rep11ADOQuerySum18.Value];
 DBText19.Font.Color  := FontColors[Sum11_19Edit.Value <> Rep11ADOQuerySum19.Value];
 DBText20.Font.Color  := FontColors[Sum11_20Edit.Value <> Rep11ADOQuerySum20.Value];
 DBText21.Font.Color  := FontColors[Sum11_21Edit.Value <> Rep11ADOQuerySum21.Value];
 DBText22.Font.Color  := FontColors[Sum11_22Edit.Value <> Rep11ADOQuerySum22.Value];
end;


Вот картинка моей попытки сравнения

http://yurec66.narod.ru/Vopros.jpg

Подскажите, как все-же их сравнить на неравенство?
Rep11ADOQuery - связан с компонентами DBText.
Sum11_1Edit -:- Sum11_22Edit - Компоненты TCurrencyEdit (на картинке с зеленым фоном, формат 0.0)
БД - MSAccess
Спасибо.


 
REA   (2006-02-10 15:50) [1]

см. SameValue


 
StriderMan ©   (2006-02-10 16:19) [2]

Сталкивались с такой проблемой.
дело в том что получается
(3 / 7 ) * 7 <> 7 (!!!!!!!)

где-то в младших разрядах далеко позади запятой появляется единичка или еще что-то.

поэтому если надо сранить два Floata на равенство, нужно брать модуль разницы этих чисел и сравнивать с заранее заведенной константой точности. Мы использовали 0.000001


 
Vlad ©   (2006-02-10 16:19) [3]


> kyn66 ©   (10.02.06 15:15)  

Предварительно округлив, скажем, до двух знаков после запятой


 
McSimm ©   (2006-02-10 16:34) [4]

иногда удобно сравнивать строки
.AsString <> .AsString


 
kyn66 ©   (2006-02-10 16:44) [5]

Помогло [1] ! Спасибо заподсказку !


 
Desdechado ©   (2006-02-10 18:03) [6]

числа с плавающей точкой сравнивать бессмысленно, ибо способ их машинного представления подразумевает наличие погрешности
это первая заповедь



Страницы: 1 вся ветка

Текущий архив: 2006.02.26;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.034 c
6-1131924898
Storm
2005-11-14 02:34
2006.02.26
Активация CheckBox в WebBrowser.


15-1138911475
Piter
2006-02-02 23:17
2006.02.26
Контрольная сумма TTH


6-1132092302
Volf_555
2005-11-16 01:05
2006.02.26
Как по сети копировать папки с файлами?


11-1120737346
rOOse
2005-07-07 15:55
2006.02.26
TreeView


4-1134158169
cerber
2005-12-09 22:56
2006.02.26
EXE как ресурс. Как запустить?