Hallo,
mir ist heute folgendes Phänomen aufgefallen und ich kann es mir absolut nicht erklären.
Ich habe in einem Programm eine Addition von Prozentwerten.
Ich hab einen Prozentwert (99.99) der in einem Datensatz in einer FDQuery (tabauf1) steht.
Der Datentyp des Feldes in der MariaDB Datenbank "FSP" ist double.
Nun sollen 0.01 diesem Wert dazuaddiert werden.
Macht logischerweise genau 100.
Dieser berechnete Wert muss nun überprüft werden ob er kleiner als 100 ist. (Grund sei mal dahingestellt)
Wenn ich aber im Quellcode folgendes mache, ist das Ergebnis true.
Delphi-Quellcode:
//Bool //99.99 //DB-Typ: Double //0.01 //Typ: Double
b := (tabauf1.fieldbyname('
fsp').asfloat + danzahlung) < 100;
Für mich rechnet er jetzt folgendes:
99.99 + 0.01 = 100
100 < 100 = true.
Wenn ich allerdings "(tabauf1.fieldbyname('fsp').asfloat + danzahlung) < 100" in die Überwachten Ausdrücke schiebe, erhalte ich false als Ergebnis.
Also das was ich erwarten würde.
Warum erhalte ich bei der gleichen Bedingung unterschiedliche Ergebnisse und wieso ist, nur wegen einer Berechnung 100 < 100 Wahr?
Zum besseren Verständnis noch ein Screenshot im Anhang (Das Exit diente nur für den Haltepunkt).
Vielen Dank im vorraus!