Haben Sie die beiden Rundungsmethoden in Python gelernt?
May 02, 2023 pm 01:25 PM1. Verwenden Sie „rund“
In den meisten Fällen verwenden wir „rund“, um Dezimalzahlen beizubehalten, aber dies entspricht nicht den Regeln unseres mathematischen Wissens.
round(number[, ndigits])
round() rundet die Zahl (normalerweise eine Gleitkommazahl) gemäß den folgenden Regeln (Python3):
Lassen Sie uns über den Fall sprechen, in dem ndigits nicht 0 ist:
Wenn die letzte Ziffer der reservierten Ziffer kleiner ist größer oder gleich 4. Wenn die letzte Ziffer der reservierten Ziffer gleich 5 ist und nach der Ziffer eine Zahl steht, wird ein Übertrag durchgeführt, z. B. Round(5.2151,2) = 5.22
Wenn die letzte Ziffer Ist die reservierte Ziffer größer oder gleich 6, wird ein Übertrag durchgeführt. Zum Beispiel: Round(5.216,2) = 5.22
>>> round(5.214,2) 5.21 >>> round(5.215,2) 5.21 >>> round(5.2151,2) 5.22 >>> round(5.216,2) 5.22 >>>
Aber es gibt Ausnahmen von der obigen Regel 2, wie zum Beispiel:
>>> round(0.645,2) 0.65 >>>
Der Grund dafür ist, dass Gleitkommazahlen nur ungefähre Werte darstellen können, wenn sie binär ausgedrückt werden Wir sehen 0,645, in Wirklichkeit speichert Python 0,645000000000000017763568394002504646778106689453125. Python speichert Gleitkommazahlen gemäß dem IEEE754-Standard.
Lassen Sie uns über den Fall sprechen, in dem ndigits 0 oder Keine ist:
Wenn die letzte Ziffer der reservierten Ziffer kleiner oder gleich 4 ist, verwerfen Sie sie, z. B. Round(1.4) = 1
Wenn die letzte Ziffer der reservierten Ziffer ist gleich 5Und es gibt keine Zahl danach, dann wird die nächste gerade Zahl genommen, wie zum Beispiel runde(1,5)=2, runde(2,5)=2
Wenn die letzte Ziffer der reservierten Ziffer gleich 5 ist und eine Zahl dahinter steht, wird die nächste Ziffer genommen, z. B. rund( 2,51)=3
Wenn die letzte Ziffer der reservierten Ziffer größer oder gleich 6 ist, dann Übertrag. Beispiel: Round(1.6) = 2
>>> round(1.5) 2 >>> round(1.4) 1 >>> round(1.6) 2 >>> round(2.5) 2 >>> round(2.51) 3 >>>
Bitte beachten Sie, dass das beibehaltene Ergebnis der f-Zeichenfolge mit rund:
>>> f"{1.5:.0f}" '2' >>> f"{2.5:.0f}" '2' >>> f"{2.51:.0f}" '3'
übereinstimmt. Wie erhält man also eine Methode, die mit den mathematischen Rundungsregeln konsistent ist? Bitte verwenden Sie Methode zwei:
2. Dezimalzahl verwenden
Diese Methode setzt voraus, dass die Dezimalzahl zuerst in eine Zeichenfolge umgewandelt wird, damit Gleitkommazahlen genau dargestellt werden können.
import decimal # 修改舍入方式为四舍五入 decimal.getcontext().rounding = "ROUND_HALF_UP" x = "0.645" x1 = decimal.Decimal(x).quantize(decimal.Decimal("0.00")) print(f"{x} 的近似值为 {x1}") y = "2.5" y1 = decimal.Decimal(y).quantize(decimal.Decimal("0")) print(f"{y} 的近似值为 {y1}")
Die Ausgabe des obigen Programms ist wie folgt:
0.645 的近似值为 0.65 2.5 的近似值为 3
Es entspricht vollständig unserer mathematischen Rundung.
Abschlusswörter
Gleitkommazahlen können nur Näherungswerte in binärer Darstellung darstellen. Zu diesem Punkt können Sie das Dokument [1] überprüfen. Nachdem Sie die Darstellung von Gleitkommazahlen verstanden haben, wird es Ihnen nicht mehr so seltsam vorkommen, wenn Sie sich das Runden ansehen.
Referenzen
[1] Dokumentation: https://docs.python.org/3/tutorial/floatingpoint.html#tut-fp-issues
Das obige ist der detaillierte Inhalt vonHaben Sie die beiden Rundungsmethoden in Python gelernt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heißer Artikel

Hot-Tools-Tags

Heißer Artikel

Heiße Artikel -Tags

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Wie benutze ich eine schöne Suppe, um HTML zu analysieren?

So verwenden Sie Python, um die ZiPF -Verteilung einer Textdatei zu finden

Wie führe ich ein tiefes Lernen mit Tensorflow oder Pytorch durch?

So implementieren Sie Ihre eigene Datenstruktur in Python

Einführung in die parallele und gleichzeitige Programmierung in Python

Serialisierung und Deserialisierung von Python -Objekten: Teil 1

Mathematische Module in Python: Statistik
