Ich bin Anfänger in Python, und ich habe eine Frage.
Warum funktioniert das Runden einer Zahl wie 5.5, 7.5, (irgendwas) .5 mit ungeradem ganzzahligen Teil, der round(num)
anwendet, richtig (Regel 5/4), aber Rundenzahl wie (alles) .5 mit nicht-ungeradzahligem ganzzahligen Teil Funktion gibt nur einen ganzzahligen Teil zurück?
(Aber wenn wir eine kleine Zahl wie 0.000000001 zu dieser Dezimalzahl hinzufügen, funktioniert es richtig)
Ich meine das nächste:
%Vor%gibt 10 zurück, und es ist korrekt. Aber
%Vor%gibt 8 zurück, und es ist nicht korrekt. Und
%Vor%gibt 9 zurück.
Warum es falsch funktioniert?
Ich benutze Python 3.2.2 unter Windows.
Python 3.x verwendet im Gegensatz zu Python 2.x Bankrunden für round()
Funktion.
Dies ist das dokumentierte Verhalten:
[I] f Zwei Vielfache sind gleich nahe, die Rundung erfolgt in Richtung der geraden Wahl (so sind zum Beispiel sowohl Runde (0,5) als auch Runde (-0,5) 0 und Runde (1,5) ist 2) / p>
Da Gleitkommazahlen von Natur aus nur Näherungen sind, sollte es nicht so sehr darauf ankommen, wie "exakte" Halbzahlen behandelt werden - es könnte sowieso immer Rundungsfehler in den vorhergehenden Berechnungen geben.
Bearbeiten : Um das alte Rundungsverhalten zu erhalten, könnten Sie
verwenden %Vor%Tags und Links python python-3.x rounding