Inhaltsverzeichnis
1. Verwenden Sie „rund“
Die Ausgabe des obigen Programms ist wie folgt:
Referenzen
Heim Backend-Entwicklung Python-Tutorial Haben Sie die beiden Rundungsmethoden in Python gelernt?

Haben Sie die beiden Rundungsmethoden in Python gelernt?

May 02, 2023 pm 01:25 PM
python 的四舍

1. 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])
Nach dem Login kopieren

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

Aber es gibt Ausnahmen von der obigen Regel 2, wie zum Beispiel:

>>> round(0.645,2)
0.65
>>>
Nach dem Login kopieren

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

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

ü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}")
Nach dem Login kopieren

Die Ausgabe des obigen Programms ist wie folgt:

0.645 的近似值为 0.65
2.5 的近似值为 3
Nach dem Login kopieren

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!

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

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie benutze ich eine schöne Suppe, um HTML zu analysieren? Wie benutze ich eine schöne Suppe, um HTML zu analysieren? Mar 10, 2025 pm 06:54 PM

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

So verwenden Sie Python, um die ZiPF -Verteilung einer Textdatei zu finden So verwenden Sie Python, um die ZiPF -Verteilung einer Textdatei zu finden Mar 05, 2025 am 09:58 AM

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

Bildfilterung in Python Bildfilterung in Python Mar 03, 2025 am 09:44 AM

Bildfilterung in Python

Wie führe ich ein tiefes Lernen mit Tensorflow oder Pytorch durch? Wie führe ich ein tiefes Lernen mit Tensorflow oder Pytorch durch? Mar 10, 2025 pm 06:52 PM

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

So implementieren Sie Ihre eigene Datenstruktur in Python So implementieren Sie Ihre eigene Datenstruktur in Python Mar 03, 2025 am 09:28 AM

So implementieren Sie Ihre eigene Datenstruktur in Python

Einführung in die parallele und gleichzeitige Programmierung in Python Einführung in die parallele und gleichzeitige Programmierung in Python Mar 03, 2025 am 10:32 AM

Einführung in die parallele und gleichzeitige Programmierung in Python

Serialisierung und Deserialisierung von Python -Objekten: Teil 1 Serialisierung und Deserialisierung von Python -Objekten: Teil 1 Mar 08, 2025 am 09:39 AM

Serialisierung und Deserialisierung von Python -Objekten: Teil 1

Mathematische Module in Python: Statistik Mathematische Module in Python: Statistik Mar 09, 2025 am 11:40 AM

Mathematische Module in Python: Statistik

See all articles