AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Zahlen für Vergleich in der Auflösung begrenzen
Thema durchsuchen
Ansicht
Themen-Optionen

Zahlen für Vergleich in der Auflösung begrenzen

Ein Thema von messie · begonnen am 5. Jun 2007 · letzter Beitrag vom 5. Jun 2007
Antwort Antwort
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#1

Zahlen für Vergleich in der Auflösung begrenzen

  Alt 5. Jun 2007, 14:07
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
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#2

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

  Alt 5. Jun 2007, 14:09
vielleicht reicht dir schon ein isequal
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Flax

Registriert seit: 12. Mär 2003
76 Beiträge
 
Delphi 7 Enterprise
 
#3

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

  Alt 5. Jun 2007, 14:10
Ich errinere mich, dass ich von "Real" deswegen abgekommen bin. Jetzt benutze ich stattdessen "Currency".

Weiß nicht, ob es dir hilft?!?
  Mit Zitat antworten Zitat
Flax

Registriert seit: 12. Mär 2003
76 Beiträge
 
Delphi 7 Enterprise
 
#4

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

  Alt 5. Jun 2007, 14:12
Ach, ich würde immer zur Berechnung dieser Fließkommawerte IMMER denselben Datentyp benutzen! Das ist dann wohl auch dein Problem.
  Mit Zitat antworten Zitat
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#5

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

  Alt 5. Jun 2007, 14:45
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
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#6

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

  Alt 5. Jun 2007, 14:57
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

Und bei dem Namen...
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Benutzerbild von cruiser
cruiser

Registriert seit: 23. Dez 2003
Ort: Königsbrück/Sachsen
455 Beiträge
 
Delphi 7 Enterprise
 
#7

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

  Alt 5. Jun 2007, 15:40
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;
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#8

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

  Alt 5. Jun 2007, 16:11
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.
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
5. Jun 2007, 16:51
Dieses Thema wurde von "Matze" von "Programmieren allgemein" nach "Sonstige Fragen zu Delphi" verschoben.
Benutzerbild von cruiser
cruiser

Registriert seit: 23. Dez 2003
Ort: Königsbrück/Sachsen
455 Beiträge
 
Delphi 7 Enterprise
 
#10

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

  Alt 5. Jun 2007, 19:52
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

EDIT: oki, oki... heisst SameValue
  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 16:30 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