![]() |
Double Werte vergleichen
Wie vergleicht man Double-Werte?
Ich habe A := 1.0 und B := 10.0. Wenn ich nun if A >= B vergleiche erhalte ich komischerweise True. |
AW: Double Werte vergleichen
Zeig mal deinen Code. Man sollte zudem bei Double-Werten, daran denken, dass die interne Darstellung von der angezeiget abweichen kann. Bei Rechnungen kann zum Beispiel 10.0000000000001 rauskommen, was als 10 ausgegeben wird. Aber ein Vergleich auf x = 10 schlägt dann fehl, wenn x = 10 ist. Deswegen berücksichtigt man dieses Verhalten, indem man ein Epsilon-Wert einführt, in dem man angibt wie ungenau es sein darf.
|
AW: Double Werte vergleichen
Ein Vergleich von 1.0 und 10.0 auf größer-gleich scheitert sicher nicht an der Genauigkeit.
|
AW: Double Werte vergleichen
Wer weiß? :lol:
Deswegen habe ich ja nach Code gefragt. Das mit der Genauigkeit war nur eine Zusatzinfo. |
AW: Double Werte vergleichen
Bei recht nahe beienander liegenden Werten sollte man einen unscharfen Vergleich verwenden:
Delphi-Quellcode:
Das vermeidet automatisch auftretende Rundungsfehler, falls eine Dezimal-Zahl binär nicht exakt abgebildet werden kann.
System.Math.SameValue(const a, b: Double; Epsilon: Double): Boolean; overload;
Gruß Andreas |
AW: Double Werte vergleichen
Genau das meine ich.
|
AW: Double Werte vergleichen
Ihr Lieben,
die Hinweise auf die Vergleichstoleranz mögen ja ganz nett sein, aber wenn man 1.0 mit 10.0 vergleicht, dann braucht man keine Vergleichstoleranz. Vielleich zeigt Dolly uns mal etwas Code. |
AW: Double Werte vergleichen
Zitat:
|
AW: Double Werte vergleichen
Zitat:
Meiner Meinung nach gibt es immer eine, je nach Aufgabenstellung. |
AW: Double Werte vergleichen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:24 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz