Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Zahlen für Vergleich in der Auflösung begrenzen (https://www.delphipraxis.net/93406-zahlen-fuer-vergleich-der-aufloesung-begrenzen.html)

messie 5. Jun 2007 14:07


Zahlen für Vergleich in der Auflösung begrenzen
 
Moin,

Ich habe zwei Arrays mit reals zu vergleichen. Die Zahlen sind im Evaluator sichtbar gleich (das würde auch für den Vergleich ausreichen), werden aber als ungleich erkannt, wohl weil sie zwischendrin mal mit unterschiedlicher Auflösung verarbeitet wurden.

Kann man die Auflösung von Fließkommazahlen so maskieren, um diesen Vergleich möglich zu machen?

Grüße, Messie

Nikolas 5. Jun 2007 14:09

Re: Zahlen für Vergleich in der Auflösung begrenzen
 
vielleicht reicht dir schon ein isequal

Flax 5. Jun 2007 14:10

Re: Zahlen für Vergleich in der Auflösung begrenzen
 
Ich errinere mich, dass ich von "Real" deswegen abgekommen bin. Jetzt benutze ich stattdessen "Currency".

Weiß nicht, ob es dir hilft?!?

Flax 5. Jun 2007 14:12

Re: Zahlen für Vergleich in der Auflösung begrenzen
 
Ach, ich würde immer zur Berechnung dieser Fließkommawerte IMMER denselben Datentyp benutzen! Das ist dann wohl auch dein Problem.

messie 5. Jun 2007 14:45

Re: Zahlen für Vergleich in der Auflösung begrenzen
 
Zitat:

Zitat von Nikolas
vielleicht reicht dir schon ein isequal

Das hat als Hinweis immerhin gereicht, um besser suchen zu können. Dabei bin ich auf die Funktion Math.RoundTo gestoßen, die mir das bietet was ich brauche. In dem Thread den ich fand hattest Du übrigens auch nicht erläutert, wo die Funktion steht und was sie macht :)
Zitat:

Ach, ich würde immer zur Berechnung dieser Fließkommawerte IMMER denselben Datentyp benutzen! Das ist dann wohl auch dein Problem.
Die Werte werden in ein TChart gesteckt, dort werden sie teilweise mit der Maus per Ziehen verändert und hinterher zurückgelesen. Da kann ich nicht erwarten, daß dieselbe Auslösung rauskommt, die ich reingesteckt habe....

Danke, Messie

Nikolas 5. Jun 2007 14:57

Re: Zahlen für Vergleich in der Auflösung begrenzen
 
Zitat:

In dem Thread den ich fand hattest Du übrigens auch nicht erläutert, wo die Funktion steht und was sie macht
Ein bischen selbst suchen ist schon nötig :mrgreen:

Und bei dem Namen...

cruiser 5. Jun 2007 15:40

Re: Zahlen für Vergleich in der Auflösung begrenzen
 
hm... keine Ahnung ob das schneller als 2 RoundTo ist:

Delphi-Quellcode:
function FloatEqual(const a,b: Extended): Boolean;
const
  MAX_DIFF = 0.0001; // deine maximale differenz
begin
  Result := Abs(a - b) <= MAXDIFF;
end;

Nikolas 5. Jun 2007 16:11

Re: Zahlen für Vergleich in der Auflösung begrenzen
 
Das ist genau die Funktionsweise von isequal, wobei bei der offiziellen Funktion sicherlich ein besserer Wert für MAXDIFF gewählt wurde. Und sie wurde sicherlich optimiert.

DP-Maintenance 5. Jun 2007 16:51

DP-Maintenance
 
Dieses Thema wurde von "Matze" von "Programmieren allgemein" nach "Sonstige Fragen zu Delphi" verschoben.

cruiser 5. Jun 2007 19:52

Re: Zahlen für Vergleich in der Auflösung begrenzen
 
Gut möglich... aber unter D7 hab ich die Funktion nich... auch nich in der Math. Dann wirds der Threadertseller im 6er sicher nicht haben :zwinker:

EDIT: oki, oki... heisst SameValue :oops:


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