Der Martin: sqrt unterschiedliche Ergebnisse auf unterschiedlichen Webseiten

Beitrag lesen

Hallo,

Jetzt gibt es eine Berechnung sqrt( 1 * 1 - 0.89101 * 0.89101) die bei meinem System und bei Google auf 0,45398 ( 0,45398367801056 ) kommt auf anderen Webseiten jedoch auf 0,45399 ( 0,4539904997 ). Ein Rundungsfehler ist es nicht.

wie kannst du da so sicher sein? Das ist das erste, was ich als Erklärung angeboten hätte.

Single Precision Floats mit 32bit nach IEEE 754 haben eine Genauigkeit von etwa 6..7 signifikanten Dezimalstellen. Das würde etwa mit der Größenordnung zusammenpassen, in der deine beobachteten Abweichungen liegen.

Ich habe es in JS, PHP, meinem Taschenrechner und auf Google getestet. Es kommt jedesmal das Ergebnis mit der 8 an Position 5. Auf anderen Webseiten kommt das Ergebnis mit der 9 am Ende.

Lass mich raten: Deine lokalen Testmöglichkeiten rechnen mit 64bit oder gar 80bit-Floats, die externen Seiten, die du getestet hast, nur mit 32bit-Floats.

Wie kann sowas sein? Ist das Wurzelziehen nicht eindeutig?

Oh, Wurzelziehen (Radizieren) ist sowas von eindeutig. Aber nicht-rationale reelle Zahlen lassen sich eben nicht exakt in einer binären Repräsentation mit begrenzter Stellenzahl darstellen. Selbst manche rationalen Zahlen sind als Binärbruch nicht exakt darstellbar, darunter so einfache wie etwa 1/10. Auch im Dezimalsystem lassen sich ja viele rationale Zahlen nicht exakt darstellen, zum Beispiel 1/7.

Schönen Abend,
 Martin

--
Computer müssen weiblich sein: Eigensinnig, schwer zu durchschauen, immer für Überraschungen gut - aber man möchte sie nicht missen.