Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Theoretische Informatik » Nochmal die doofen Gleitkommazahlen (Sprache C) » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Nochmal die doofen Gleitkommazahlen (Sprache C)
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
DrInf
unregistriert
Nochmal die doofen Gleitkommazahlen (Sprache C) Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Meine Frage:
Ich hatte hier letztes Mal schon einen Beitrag gepostet zu diesem Thema, nun noch einmal: Etwas besser ist der folgende Ansatz:

Hier eine Methode, um zwei Gleitkommazahlen miteinander zu vergleichen:
final double EPSILON = ... // z.B. 0.000001
double a = ...
double b = ...
if (Math.abs( a - b ) < EPSILON)
{ ... } // almost equal
else
{ ... } // not equal

(c) Funktioniert der unter (b) entwickelte Ansatz auch, wenn die Variablen a und b im Verlauf
der Rechnung Werte sehr unterschiedlicher Größenordnungen (z.B. zunächst a = b = [latex]10^{15}[/latex],
später aber a = b = [latex]10^{-7}[/latex]) annehmen können?
Geben Sie ein Verfahren an, dass bei fest gewähltem Epsilon auch für Variablen mit fast gleichen
Werten in sehr unterschiedlichen Wertebereichen funktioniert. Benutzen Sie ggf. die Funktionen
Math.abs(a) für den Absolutwert der Variable a, Math.max(a,b) für die größere der
beidenWerte a und b, und Math.isNaN(a) für den Test auf den Wert NaN:

/* returns 1 if two double-precision numbers are almost equal,
considering their scale, and 0 otherwise. */
int AlmostEqual( double a, double b ) {
... // your code here
}


Meine Ideen:
Ich hab ehrlich gesagt keinerlei Ansätze. Unsere Tutoren faseln durchgängig etwas von prozentualer Abweichung, ich weiß aber leider nicht, was ich mit der prozentualen Abweichung hier anfangen soll? Hinzukommt, dass mir die Sprache C überhaupt nicht bekannt ist, da ich in Java programmiere. Kann mir hier bitte, bitte irgendjemand weiterhelfen? unglücklich
11.11.2015 10:46
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Wie du mit den unterschiedlichen Wertebereichen umgehen kannst, hatte ich dir schon letztes Mal erklärt (Gleitkommazahlen IEEE754 Problem).
C und Java unterscheiden sich da nicht wirklich, da sie beide den IEEE Standard verwenden.

__________________
Syntax Highlighting fürs Board (Link)
11.11.2015 16:45 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Theoretische Informatik » Nochmal die doofen Gleitkommazahlen (Sprache C)