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

Informatiker Board » Themengebiete » Theoretische Informatik » Nochmal die doofen Gleitkommazahlen (Sprache C) » Antwort erstellen » Hallo Gast [Anmelden|Registrieren]

Antwort erstellen
Benutzername: (du bist nicht eingeloggt!)
Thema:
Nachricht:

HTML ist nicht erlaubt
BBCode ist erlaubt
Smilies sind erlaubt
Bilder sind erlaubt

Smilies: 21 von 33
smileWinkDaumen hoch
verwirrtAugenzwinkerngeschockt
Mit ZungeGottunglücklich
Forum Kloppebösegroßes Grinsen
TanzentraurigProst
TeufelSpamWillkommen
LehrerLOL HammerZunge raus
Hilfe 
aktuellen Tag schließen
alle Tags schließen
fettgedruckter Textkursiver Textunterstrichener Text zentrierter Text Hyperlink einfügenE-Mail-Adresse einfügenBild einfügen Zitat einfügenListe erstellen CODE einfügenPHP CODE farbig hervorheben
Spamschutz:
Text aus Bild eingeben
Spamschutz

Die letzten 2 Beiträge
eulerscheZahl

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.
DrInf Nochmal die doofen Gleitkommazahlen (Sprache C)

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