AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Double Werte vergleichen

Ein Thema von DieDolly · begonnen am 25. Mai 2019 · letzter Beitrag vom 28. Mai 2019
Antwort Antwort
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#1

Double Werte vergleichen

  Alt 25. Mai 2019, 22:55
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.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

AW: Double Werte vergleichen

  Alt 25. Mai 2019, 23:21
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.034 Beiträge
 
Delphi 12 Athens
 
#3

AW: Double Werte vergleichen

  Alt 26. Mai 2019, 00:15
Ein Vergleich von 1.0 und 10.0 auf größer-gleich scheitert sicher nicht an der Genauigkeit.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

AW: Double Werte vergleichen

  Alt 26. Mai 2019, 01:17
Wer weiß?

Deswegen habe ich ja nach Code gefragt. Das mit der Genauigkeit war nur eine Zusatzinfo.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Andreas13

Registriert seit: 14. Okt 2006
Ort: Nürnberg
711 Beiträge
 
Delphi XE5 Professional
 
#5

AW: Double Werte vergleichen

  Alt 26. Mai 2019, 21:08
Bei recht nahe beienander liegenden Werten sollte man einen unscharfen Vergleich verwenden:

System.Math.SameValue(const a, b: Double; Epsilon: Double): Boolean; overload; Das vermeidet automatisch auftretende Rundungsfehler, falls eine Dezimal-Zahl binär nicht exakt abgebildet werden kann.

Gruß
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

AW: Double Werte vergleichen

  Alt 26. Mai 2019, 21:09
Genau das meine ich.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:16 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