Python round()-Funktion mit Beispielen
⚡ Intelligente Zusammenfassung
Python round() ist eine eingebaute Funktion, die einen Gleitkomma- oder Ganzzahlwert zurückgibt, der auf eine bestimmte Anzahl von Dezimalstellen gerundet wird, wobei bei Gleichstand die Banker-Rundung zur nächsten geraden Ziffer angewendet wird.

Was ist die round()-Funktion in Python?
Python round() ist eine integrierte Funktion, die verfügbar ist mit PythonEs wird eine Gleitkommazahl zurückgegeben, die auf die als Eingabe angegebene Anzahl an Dezimalstellen gerundet wird.
Wenn die zu rundenden Dezimalstellen nicht angegeben sind, wird es als 0 betrachtet und auf die nächste Ganzzahl gerundet.
Syntax
round(float_num, num_of_decimals)
Kenngrößen
- float_num: Die Gleitkommazahl soll gerundet werden.
- Anzahl_Dezimalstellen: (Optional) Die Anzahl der Dezimalstellen, die beim Runden berücksichtigt werden sollen. Diese Angabe ist optional; wird sie nicht verwendet, ist der Standardwert 0, und es wird auf die nächste ganze Zahl gerundet.
Beschreibung
Die round()-Methode benötigt zwei Argumente:
- die zu rundende Zahl,
- die Dezimalstellen, die beim Runden berücksichtigt werden sollen.
Das zweite Argument ist optional und hat standardmäßig den Wert 0, wenn es nicht angegeben wird. In diesem Fall wird auf die nächste ganze Zahl gerundet, und der Rückgabetyp ist ebenfalls eine ganze Zahl.
Wenn die Nachkommastellen, also das zweite Argument, vorhanden sind, wird auf die angegebene Stellenzahl gerundet. Der Rückgabetyp ist ein Float.
Wenn die Zahl nach dem Komma lautet:
- Bei >= 5 wird zum Endwert + 1 addiert.
- < 5, dann wird der Endwert unverändert bis auf die angegebene Anzahl an Dezimalstellen zurückgegeben.
Rückgabewert
Die Funktion gibt einen Integer-Wert zurück, wenn `num_of_decimals` nicht angegeben ist, und einen Float-Wert, wenn `num_of_decimals` angegeben ist. Der Wert wird auf +1 gerundet, wenn die Zahl nach dem Komma mindestens 5 beträgt; andernfalls wird der Wert bis zur angegebenen Anzahl an Dezimalstellen unverändert zurückgegeben.
Welchen Einfluss kann Rundung haben? (Rundung vs. Kürzung)
Das beste Beispiel, um die Auswirkungen von Rundungen zu veranschaulichen, ist der Aktienmarkt. In der Vergangenheit, also im Jahr 1982, Vancouver-Börse (VSE) wurde verwendet, um die Aktienkurse bei jedem Handel auf drei Dezimalstellen zu runden.
Dies geschah fast 3000 Mal täglich. Die dadurch akkumulierten Kürzungen führten zu einem Verlust von rund 25 Punkten pro Monat.
Ein Beispiel für das Abschneiden der Werte im Vergleich zum Runden ist unten dargestellt.
Betrachten Sie die unten generierten Gleitkommazahlen als Aktienkurse. Aktuell generiere ich sie für einen Bereich von 1,000,000 Sekunden zwischen 0.01 und 0.05.
Beispiele:
arr = [random.uniform(0.01, 0.05) for _ in range(1000000)]
Um die Auswirkungen des Rundens zu verdeutlichen, habe ich ein kleines Codefragment geschrieben, in dem zunächst die Zahlen nur bis zu 3 Dezimalstellen gerundet werden, d. h. die Zahl nach 3 Dezimalstellen abgeschnitten wird.
Ich habe den ursprünglichen Gesamtwert, den Gesamtwert nach den gekürzten Werten und die Differenz zwischen dem ursprünglichen und dem gekürzten Wert.
Anhand desselben Zahlensatzes habe ich die round()-Methode bis auf 3 Dezimalstellen angewendet und die Summe sowie die Differenz zwischen dem ursprünglichen Wert und dem gerundeten Wert berechnet.
Hier sind das Beispiel und die Ausgabe.
Beispiel 1
import random def truncate(num): return int(num * 1000) / 1000 arr = [random.uniform(0.01, 0.05) for _ in range(1000000)] sum_num = 0 sum_truncate = 0 for i in arr: sum_num = sum_num + i sum_truncate = truncate(sum_truncate + i) print("Testing by using truncating upto 3 decimal places") print("The original sum is = ", sum_num) print("The total using truncate = ", sum_truncate) print("The difference from original - truncate = ", sum_num - sum_truncate) print("\n\n") print("Testing by using round() upto 3 decimal places") sum_num1 = 0 sum_truncate1 = 0 for i in arr: sum_num1 = sum_num1 + i sum_truncate1 = round(sum_truncate1 + i, 3) print("The original sum is =", sum_num1) print("The total using round = ", sum_truncate1) print("The difference from original - round =", sum_num1 - sum_truncate1)
Ausgang:
Testing by using truncating upto 3 decimal places The original sum is = 29985.958619386867 The total using truncate = 29486.057 The difference from original - truncate = 499.9016193868665 Testing by using round() up to 3 decimal places The original sum is = 29985.958619386867 The total using round = 29985.912 The difference from original - round = 0.04661938686695066
Die Differenz zwischen dem ursprünglichen und dem abgeschnittenen Wert beträgt 499.9016193868665, und nach der Rundung (round()) beträgt sie 0.04661938686695066.
Der Unterschied scheint sehr groß zu sein, und das Beispiel zeigt, wie die round()-Methode dabei hilft, eine nahezu genaue Berechnung zu ermöglichen.
Beispiel: Rundungskomma Numbers
In diesem Programm werden wir sehen, wie das Runden von Gleitkommazahlen funktioniert.
# testing round() float_num1 = 10.60 # here the value will be rounded to 11 as after the decimal point the number is 6 that is >5 float_num2 = 10.40 # here the value will be rounded to 10 as after the decimal point the number is 4 that is <=5 float_num3 = 10.3456 # here the value will be 10.35 as after the 2 decimal points the value >=5 float_num4 = 10.3445 #here the value will be 10.34 as after the 2 decimal points the value is <5 print("The rounded value without num_of_decimals is :", round(float_num1)) print("The rounded value without num_of_decimals is :", round(float_num2)) print("The rounded value with num_of_decimals as 2 is :", round(float_num3, 2)) print("The rounded value with num_of_decimals as 2 is :", round(float_num4, 2))
Ausgang:
The rounded value without num_of_decimals is : 11 The rounded value without num_of_decimals is : 10 The rounded value with num_of_decimals as 2 is : 10.35 The rounded value with num_of_decimals as 2 is : 10.34
Beispiel: Ganzzahlwerte runden
Wenn Sie „round()“ für einen ganzzahligen Wert verwenden, erhalten Sie einfach die Zahl ohne Änderungen zurück.
# testing round() on a integer num = 15 print("The output is", round(num))
Ausgang:
The output is 15
Beispiel: Auf Negativ runden Numbers
Schauen wir uns einige Beispiele an, wie das Runden negativer Zahlen funktioniert.
# testing round() num = -2.8 num1 = -1.5 print("The value after rounding is", round(num)) print("The value after rounding is", round(num1))
Ausgang:
C:\pythontest>python testround.py The value after rounding is -3 The value after rounding is -2
Beispiel: Runden von NumPy-Arrays
Wie rundet man in NumPy? Arrays in Python?
Um dieses Problem zu lösen, können wir das NumPy-Modul nutzen und die Methode numpy.round() oder numpy.around() verwenden, wie im folgenden Beispiel gezeigt.
Verwenden von numpy.round()
# testing round() import numpy as np arr = [-0.341111, 1.455098989, 4.232323, -0.3432326, 7.626632, 5.122323] arr1 = np.round(arr, 2) print(arr1)
Ausgang:
C:\pythontest>python testround.py [-0.34 1.46 4.23 -0.34 7.63 5.12]
Alternativ können wir auch numpy.around() verwenden, was zum gleichen Ergebnis führt wie das oben gezeigte numpy.round().
Beispiel: Dezimalmodul
Zusätzlich zur round()-Funktion Python verfügt über ein Dezimalmodul, das die genauere Verarbeitung von Dezimalzahlen ermöglicht.
Das Dezimalmodul bietet verschiedene Rundungstypen, wie unten dargestellt:
- RUNDE DECKE: Es wird sich in Richtung Unendlich runden.
- ABRUNDEN: Der Wert wird in Richtung Null gerundet.
- RUNDER BODEN: Es wird sich gegen -Unendlich runden.
- ABRUNDEN_HALB_AB: Es wird auf den nächstliegenden Wert in Richtung Null gerundet.
- ROUND_HALF_EVEN: Es wird auf den nächstliegenden Wert gerundet, wobei die nächste gerade Zahl folgt.
- AUFRUNDEN: Es wird auf den nächstliegenden Wert von Null gerundet.
- AUFRUNDEN: Es wird gerundet, sobald der Wert von Null abweicht.
Im Dezimalformat hilft die Methode quantize() dabei, auf eine feste Anzahl von Dezimalstellen zu runden, und Sie können die zu verwendende Rundung angeben, wie im folgenden Beispiel gezeigt.
Ejemplo: Verwendung von Round()- und Dezimalmethoden
import decimal round_num = 15.456 final_val = round(round_num, 2) #Using decimal module final_val1 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_CEILING) final_val2 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_DOWN) final_val3 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_FLOOR) final_val4 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_HALF_DOWN) final_val5 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_HALF_EVEN) final_val6 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_HALF_UP) final_val7 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_UP) print("Using round()", final_val) print("Using Decimal - ROUND_CEILING ",final_val1) print("Using Decimal - ROUND_DOWN ",final_val2) print("Using Decimal - ROUND_FLOOR ",final_val3) print("Using Decimal - ROUND_HALF_DOWN ",final_val4) print("Using Decimal - ROUND_HALF_EVEN ",final_val5) print("Using Decimal - ROUND_HALF_UP ",final_val6) print("Using Decimal - ROUND_UP ",final_val7)
Ausgang:
Using round() 15.46 Using Decimal - ROUND_CEILING 15.46 Using Decimal - ROUND_DOWN 15.45 Using Decimal - ROUND_FLOOR 15.45 Using Decimal - ROUND_HALF_DOWN 15.46 Using Decimal - ROUND_HALF_EVEN 15.46 Using Decimal - ROUND_HALF_UP 15.46 Using Decimal - ROUND_UP 15.46
