ClientDataSet -> konwersja AsFloat - ciekawe zachowanie

0

Mam taki prosty kod:

var x: double;
[...]
if x<> ClientDataSet.FieldByName('MyField').AsFloat then
begin
  ShowMessage('Wartości są różne');
end;

I oto co ciekawego się dzieje: w zmiennej x jest liczba 0,8. W polu MyField jest również 0,8. Debuger również pokazuje mi takie same wartości. Jednak program wskakuje do fragmentu z ShowMessage. Dlaczego tak się dzieje? Nie bardzo to rozumiem. Przecież x jest typu double, tak samo jak wartość zwracana przez AsFloat.

---------Dodane:---------

Na stronie Embarcadero (dokumentacja) znalazłem takie coś:
http://docwiki.embarcadero.com/Libraries/XE3/en/Data.DB.TField.AsFloat
ale po najechaniu kursorem myszy na "AsFloat" w kodzie, Delphi podpowiada mi, że jest to typ "System.Extended". Niestety, użycie zmiennej typu Extended nic nie zmienia.

Używam Delphi 2010 Architect.

0

Ech, tyle razy było, że liczb zmiennoprzecinkowych nie porównuje się w ten sposób a tu dalej swoje i się jeszcze dziwi...

0

Dzięki, nie wiedziałem, że nie da się tak bezpośrednio porównywać liczb zmiennoprzecinkowych. Przyda się na przyszłość :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1