Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.027 c
15-1138800360
Ega23
2006-02-01 16:26
2006.02.26
Вопрос к москвичам


1-1138223127
Виктор8
2006-01-26 00:05
2006.02.26
блокировка ALT+F4


2-1139398228
nap<>
2006-02-08 14:30
2006.02.26
SQL запрос


2-1139755166
~Intel~
2006-02-12 17:39
2006.02.26
Шифрование


15-1139291447
DelphiN!
2006-02-07 08:50
2006.02.26
Соединение с сервером происходит только после его пинга




   Наверх