Warum rundet Python halbe Gleitkommazahlen auf gerade Zahlen?

Linda Hamilton
Freigeben: 2024-10-17 15:53:29
Original
693 Leute haben es durchsucht

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>
Nach dem Login kopieren

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
Nach dem Login kopieren

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>
Nach dem Login kopieren

Ausgabe:

0.5 => 1
1.5 => 2
2.5 => 3
3.5 => 4
4.5 => 5
5.5 => 6
6.5 => 7
Nach dem Login kopieren

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!

Quelle:php
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!