Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi A > B (Realzahlen-Problem) (https://www.delphipraxis.net/5029-b-realzahlen-problem.html)

Gast 21. Mai 2003 10:37


A > B (Realzahlen-Problem)
 
Hallo 8)

Ich habe ein Real-Zahlen Problem:

VAR
a : Real;
b : Real;

Nun die beiden Zahlen werden auf verschiedenem Wege ermittelt. Das Problem fängt erst bei direktem Vergleich beiden Zahlen

IF a > b THEN

und jetzt kommt etwas was ich nicht verstehe. In dem Debuger beide Zahlen zeigen den Wert z.B. 100.4. Leider Compieler meint an dieser Stelle das

a ist größer als b ???

wie kann ich diesen Fehler beseitigen...

Gruß

Paul Jr.

Hansa 21. Mai 2003 10:48

Hi Paul Jr. 8)

*hurrapauljrlebtnoch* Du hast doch selber geschrieben, wo der Hund begraben liegt:

Zitat:

Zitat von Paul Jr.
Nun die beiden Zahlen werden auf verschiedenem Wege ermittelt. Das Problem fängt erst bei direktem Vergleich beiden Zahlen

Es liegt an den verschlungenen Wegen: 3 / 100 * 100 gibt wahrscheinlich was anderes, als 0.03 * 100. Ich würde da irgendwo runden, denn real-Vergleiche bringen meist so nen Ärger wie hier. Binär- und Dezimalsystem sind nur selten kompatibel. :mrgreen:

Gast 21. Mai 2003 10:58

Hallo Hansa, :D

natürlich Du hast Recht... da

a – b ergibt hier eine Zahl: 9.0949470177e-13

Ich werde noch verrückt...

muss ich glaube ich wirklich Runden...

Wüsstest Du „zufällig“ was an dieser Stelle die sicherste Methode wäre? :lol:


Gruß

Paul Jr.

Mario 21. Mai 2003 11:01

In Delphi 6 gibt es isZero. Damit kannst Du auf Null in einem gewissen Bereich prüfen. Dann sparst Du Dir das Runden.

Hansa 21. Mai 2003 11:04

Du schreibst '100.4' als Beispiel. Wenn da nur 1 Nachkommastelle interessant ist, würde ich a und b mit 10 multiplizieren, als integer umwandeln und vergleichen. So mach ichs vorsichtshalber z.B. mit DM ähm EUR-Beträgen (Betrag * 100). Direkte Real-Vergleiche verwende ich grundsätzlich nicht.

Gast 21. Mai 2003 11:07

Hallo Hansa 8) , Hallo Mario 8) ,

danke für Eure Anregungen… das Reicht um eine Lösung zu basteln…

Gruß

Paul Jr.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:02 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