Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Boolean Auswertung unterschiedliches Ergebnis (https://www.delphipraxis.net/203674-boolean-auswertung-unterschiedliches-ergebnis.html)

Paat 11. Mär 2020 10:42


Boolean Auswertung unterschiedliches Ergebnis
 
Liste der Anhänge anzeigen (Anzahl: 1)
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!

Sherlock 11. Mär 2020 10:58

AW: Boolean Auswertung unterschiedliches Ergebnis
 
Schau mal hier rein, da dürfte alles relevante zum Problem gesagt werden: https://www.delphipraxis.net/184097-...atentypen.html

Sherlock

Paat 11. Mär 2020 12:52

AW: Boolean Auswertung unterschiedliches Ergebnis
 
Vielen Dank für die Hilfe.
Habe schon an meinem Verstand gezweifelt :lol:


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:57 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz