""/> "">

Heim  >  Artikel  >  Backend-Entwicklung  >  Warum rundet Python halbe Gleitkommazahlen auf gerade Zahlen?

Warum rundet Python halbe Gleitkommazahlen auf gerade Zahlen?

Linda Hamilton
Linda HamiltonOriginal
2024-10-17 15:53:29694Durchsuche

Why Does Python Round Half-Floats to Even Numbers?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn