Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.02.26;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.043 c
1-1137951205
jjj
2006-01-22 20:33
2006.02.26
замена библиотек


1-1138178023
Начинающий10
2006-01-25 11:33
2006.02.26
WM_PAINT, WM_ERASEBKGND


1-1138263863
Daria
2006-01-26 11:24
2006.02.26
Копировать данные из Excel


15-1139065314
PARUS
2006-02-04 18:01
2006.02.26
Экран в рисунок


2-1139157802
Вячеслав Бессонов
2006-02-05 19:43
2006.02.26
Сохранение





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский