Das mit CompareValue habe ich auch verwendet, und das liefert mir jetzt genau, dass was ich haben wollte.
Letztlich hätte ich auch
if (Trunc(wert1*100)=Trunc(wert2*100)) then ...
machen können, wäre auf's gleich rausgekommen. (Welche Veriante jetzt mehr Rechenzeit beansprucht sei mal dahingestellt).
In meinem Fall ist es so, dass keiner der beiden zu vergleichenden Werten berechnet ist.
Der erste Wert wurde aus einer Textdatei gelesen und in Extended umgewandelt, also explizit mit 2 Nachkommastellen zugeweisen. Dann eine einem Float-Feld einer
DB gespeichert.
Danach wird er wieder gelesen.
Der zweite Wert wird auch aus der gleichen Textdatei gelesen, und mit dem aus der
DB zurückgelesenen verglichen.
Also wurde, nach meinem Empfinden keiner der beiden Werte "berechnet" bzw. mittels Rechneroperationen bearbeitet. Es sei denn der Transport durch die
ADO-Komponenten beinhaltet irgendwelche Rechenoperationen, dass weiß ich natürlich nicht.
Also stellt sich mir die Frage, ob eine Zuweisung ala
Delphi-Quellcode:
var
wert: Extended;
s: String;
begin
s:='-29.90';
wert:=StrToFloat(s)
auch evtl. abweichende Nachkommastellen hinterläßt.