Abweichung der Kommastellen
-
Hallo!
Hab mal wieder ein Problem:
Seht euch mal diesen Code an:
cout.precision(30); cout << fixed; double a,b,c; a = 2.0; b = -sqrt(2.0)*2.0; c = 1.0; b = b/a; c = c/a; cout << "sqrt(0): " << sqrt(0.0) << endl; double erg = ((b*b)/4) - c; cout << "ergebnis: " << erg << endl << endl;Normalerweise müsste doch "sqrt(0)" und "erg" das gleiche Ergebnis haben?! Wieso ist das hier nicht der Fall?
Danke
-
Ich tippe auf Probleme mit der Gleitkomma-Präzission deines Rechners (der kann schon rationale Zahlen wie 0.1 nicht exakt darstellen, was erwartest du da bei sqrt(2)?)
-
danke für die schnelle Antwort! Hast du auch irgendwelche Vorschläge wie man das umgehen könnte?
-
Stell deine Berechnung so um, daß du keine so komplexen Formeln benötigt. Oder runde deine Zwischenergebnisse in unregelmäßigen Abständen.