AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

vergleich von Werten

Ein Thema von Weazy · begonnen am 21. Nov 2007 · letzter Beitrag vom 22. Nov 2007
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von Weazy
Weazy

Registriert seit: 7. Apr 2005
Ort: Bern (Schweiz)
414 Beiträge
 
Delphi 2007 Enterprise
 
#1

vergleich von Werten

  Alt 21. Nov 2007, 20:29
Für die Uni müssen wir folgendes Problem lösen:

Beim Vergleich zweier Float Werte kann es zu Fehlern kommen, wenn sich die beiden Werte erst nach einer bestimmten Nachkommastelle unterscheiden, welche von Float nicht mehr gespeichert werden. Wie könnte man die Werte vergleichen, ohne das diese Problematik auftritt?

Danke!
Philippe Wechsler
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#2

Re: vergleich von Werten

  Alt 21. Nov 2007, 20:32
Den minimalen Unterschied, der noch als Unterschied gilt (sagen wir 0.001, alle Differenzen darunter gelten als gleich) nennen wir mal Epsilon. Wenn nun |float1 - float2| <= Epsilon ist, sind beide im Rahmen der Epsilon-Genauigkeit gleich.
  Mit Zitat antworten Zitat
Benutzerbild von Weazy
Weazy

Registriert seit: 7. Apr 2005
Ort: Bern (Schweiz)
414 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: vergleich von Werten

  Alt 21. Nov 2007, 20:33
wie währe es denn mit runden?
Philippe Wechsler
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: vergleich von Werten

  Alt 21. Nov 2007, 20:33
Du meinst, du hast zwei Float-Zahlen, z.B.:
1,000000005 und
1,000000006
Und wenn man jetzt Single nehmen würde (man kann das Beispiel auch für Extended umbauen),
dann sind die Zaheln gleich, da Single die 5 und 6 nicht mehr speichern kann.

hmmm?
Die Zahlen eben als Brüche speichern?
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von Weazy
Weazy

Registriert seit: 7. Apr 2005
Ort: Bern (Schweiz)
414 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: vergleich von Werten

  Alt 21. Nov 2007, 20:46
die Lösung muss etwas mit dem Thema diskretisierung zu tun haben...
Philippe Wechsler
  Mit Zitat antworten Zitat
quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: vergleich von Werten

  Alt 21. Nov 2007, 20:51
Die Zahlen durch bestimmte Zerlegung "kürzen". Alle vorkommastellen kann man zum Beispiel seperat speichern. Die verbleibenden Stellen kann man nun durch bestimmte Algorithmen kürzen. Wenn zum Beispiel etliche 0en (nullen) enthalten sind, kann man diese durch ein auslagern als Exponenten auch entnehmen.
So wäre zum Beispiel die Zahl 6.0000000000000005800000001 folgend zu speichern:
Vorkommawert: 6
Nachkommawerte:
15x0 + 58 + 7x0 + 1

War es nciht extended mit 16 signifikanten Nachkommastellen?

Lt. dem Problem des TE würde an dieser Stelle sich der Wert der Zahlen wohl erst ab der 17. Stelle nach dem Komma unterscheiden.

Doch da hier schon erste Ungenauigkeiten durch die Rundung der Zahl entstehen wäre es vielleicht auch sinnvoll, die Rechnung aus der die Zahl entsteht zu belassen.

Schaue man bei Wikipedia zum Thema: http://de.wikipedia.org/wiki/Diskretisierung

Dann wäre mein Vorschlag wohl schon dementiert
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: vergleich von Werten

  Alt 21. Nov 2007, 21:19
Es gibt dafür irgendne Delphi-Funktion... IsEqual, FloatEqual, FloatIsEqual oder irgendsowas in der Art. Auf jeden Fall verwendet die auch die Epsilon-Methode, und so sollte man es wohl auch machen.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: vergleich von Werten

  Alt 21. Nov 2007, 21:22
Zitat von 3_of_8:
Es gibt dafür irgendne Delphi-Funktion... IsEqual, FloatEqual, FloatIsEqual oder irgendsowas in der Art. Auf jeden Fall verwendet die auch die Epsilon-Methode, und so sollte man es wohl auch machen.
Die Funktion heist samevalue. Aber die macht ja genau das verkehrte. Sie behauptet ja die Werte sind (annähernd) gleich, obwohl sie nicht gleich sind.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: vergleich von Werten

  Alt 21. Nov 2007, 21:40
Aaah, ich hab die Frage falsch verstanden. In dem Fall könnte man eventuell einen von Hagens DECMath-Typen verwenden. Die sind - IIRC - beliebig genau.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
grenzgaenger
(Gast)

n/a Beiträge
 
#10

Re: vergleich von Werten

  Alt 21. Nov 2007, 23:49
Zitat von Weazy:
wie währe es denn mit runden?
beim runden kann es in die gegensätzlichen richtungen runden... damit sind die zahlen ungleich, obwohl sie gleich sind...

die standardmethode, ist die von DAX. diese solltest du auch verwenden... (ist im übrigen unabhängig von der programmiersprache )
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 02:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2020 by Daniel R. Wolf