""/> "">
Heim >Backend-Entwicklung >Python-Tutorial >Warum rundet Python halbe Gleitkommazahlen auf gerade Zahlen?
Halbe Gleitkommazahlen runden
Die Funktion „round()“ in Python zeigt beim Runden halber Gleitkommazahlen ein ungewöhnliches Verhalten, das verwirrend sein kann. Lassen Sie uns dieses Verhalten genauer untersuchen.
<code class="python">for i in range(1, 15, 2): n = i / 2 print(n, "=>", round(n))</code>
Dieser Code gibt Folgendes aus:
0.5 => 0 1.5 => 2 2.5 => 2 3.5 => 4 4.5 => 4 5.5 => 6 6.5 => 6
Entgegen den Erwartungen werden die Gleitkommawerte nicht immer aufgerundet. Stattdessen werden sie auch bei halben Werten auf die nächste gerade Zahl gerundet. Dieses Verhalten ist in der Python-Dokumentation unter „Numerische Typen“ dokumentiert:
"round(x[, n])
x auf n Ziffern gerundet, halb auf gerade gerundet. Wenn n weggelassen wird Der Standardwert ist 0.
Dieses Runden auf die nächste gerade Zahl, bekannt als „Banker-Rundung“, zielt darauf ab, Rundungsfehler durch Mittelung der Rundung zu verringern.
Um mehr Kontrolle darüber zu erlangen Rundungsverhalten bietet das Dezimalmodul einen flexibleren Ansatz. Das folgende Beispiel zeigt, wie man mit dem Dezimalmodul von der Hälfte aufrundet:
<code class="python">from decimal import localcontext, Decimal, ROUND_HALF_UP with localcontext() as ctx: ctx.rounding = ROUND_HALF_UP for i in range(1, 15, 2): n = Decimal(i) / 2 print(n, '=>', n.to_integral_value())</code>
Ausgabe:
0.5 => 1 1.5 => 2 2.5 => 3 3.5 => 4 4.5 => 5 5.5 => 6 6.5 => 7
Durch Anpassen des Rundungsparameters innerhalb von localcontext() können Sie die Rundung anpassen Verhalten nach Bedarf, um genaue Ergebnisse für bestimmte Rundungsszenarien sicherzustellen.
Das obige ist der detaillierte Inhalt vonWarum rundet Python halbe Gleitkommazahlen auf gerade Zahlen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!