Vielleicht sehe ich das falsch, aber nach meinem Verständnis ist das keine Besonderheit von Python sondern in der Tat etwas, worüber man sich als Programmierer in den meisten Sprachen Gedanken machen muss, wenn es denn relevant wird. Ein Grundverständnis dafür, dass bei Gleitkommazahlen ein paar Dinge zu beachten sind, gehört vielleicht nicht zu den absoluten Grundlagen, aber – würde ich sagen – schon zum Handwerkszeug der meisten, die etwas Programmiererfahrung haben. Was Python angeht, wird es jedenfalls auch im offiziellen Tutorial, das jeder mal gelesen haben sollte, vermittelt, als letztes Kapitel: https://docs.python.org/3/tutorial/floatingpoint.html
Ein Rundungsproblem
Zuletzt geändert von nezzcarth am Dienstag 30. Januar 2024, 18:45, insgesamt 1-mal geändert.
Hallo,
als ich das erste mal von diesem Problem hörte, habe ich mit die Seite https://floating-point-gui.de/ gespeichert.
Vielleicht lesen hier, so wie ich damals, auch ein paar mit, die das interessiert. Beinhaltet auch einige weiterführende Links.
Grüße
Dennis
als ich das erste mal von diesem Problem hörte, habe ich mit die Seite https://floating-point-gui.de/ gespeichert.
Vielleicht lesen hier, so wie ich damals, auch ein paar mit, die das interessiert. Beinhaltet auch einige weiterführende Links.
Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
Der Algorithmus ist korrekt, weil du nie die reelle Zahl 2,635 gerundet hast, sondern immer den `float`-Wert `2.635`, der eben nicht 2,635 ist sondern (exakt) 1483373127265157/2251799813685248 * 2². Und das ist klar kleiner als 2,635, muss also abgerundet werden.Qubit hat geschrieben: ↑Dienstag 30. Januar 2024, 11:24 Aber der (nicht ganz korrekte) Algorithmus der "round"-Funktion liefert hier als Erghebnis
Code: Alles auswählen
>>> f"{2.63:.20f}" '2.62999999999999989342'
„Natürlich“. Ja. Jede.