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.

  • 🔘 Syntax: round(number, ndigits) akzeptiert den zu rundenden Wert und eine optionale Ziffernanzahl, die standardmäßig auf Null gesetzt ist.
  • ☑️ Rückgabetyp: Lässt man ndigits weg, erhält man eine ganze Zahl; gibt man sie an, erhält man eine Gleitkommazahl.
  • Banker-Rundung: Halbwertszahlen werden auf die nächste gerade Zahl gerundet, daher gibt round(2.5) den Wert 2 zurück.
  • 🧪 Negative Zahlen: Auch bei negativen Zahlen wird gerundet, aus -2.8 wird -3 und aus -1.5 -2.
  • Präzisionswerkzeuge: Das Modul `decimal` und die Funktion `round()` von NumPy übernehmen die Rundung von Daten mit fester Genauigkeit und von Arrays.
  • 🤖 KI-Workflows: Der Code für maschinelles Lernen rundet Metriken, Wahrscheinlichkeiten und Gewichtungen für eine übersichtlichere Protokollierung und Berichterstattung.

Python round() Funktion

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

Häufig gestellte Fragen

Nein. Python Bei Gleichstand wird auf die Hälfte gerundet (Banker-Rundung), sodass round(0.5) gleich 0, round(2.5) gleich 2 und round(3.5) gleich 4 ist. Dadurch wird die kumulative Verzerrung reduziert.

Da 2.675 nicht exakt als Binärzahl gespeichert werden kann, sondern ungefähr 2.6749999999999998 entspricht, rundet round() ab. Für exakte Ergebnisse verwenden Sie decimal.Decimal('2.675').

Verwenden Sie das Modul `math`: `math.ceil(x)` rundet immer auf, `math.floor(x)` rundet immer ab und `int(x)` schneidet Zahlen in Richtung Null ab. `round()` selbst kann keine feste Richtung erzwingen.

Übergibt man ein negatives zweites Argument, ergibt round(12345, -1) 12340, round(12345, -2) 12300 und round(12345, -3) 12000. Negative ndigits runden links vom Dezimalpunkt.

`round(x, 2)` ändert den Wert, der in späteren Berechnungen verwendet wird, während `f'{x:.2f}'` lediglich die Anzeige formatiert und die Zahl unverändert lässt. Verwenden Sie `round()` für Berechnungen und `f`-Strings für die Ausgabe.

Nein. Numbers Da Variablen unveränderlich sind, gibt `round()` einen neuen Wert zurück, ohne den Eingabewert zu verändern. Weisen Sie ihm beispielsweise `result = round(3.14159, 2);` zu, die ursprüngliche Variable behält ihre volle Genauigkeit.

Der Code für maschinelles Lernen rundet Genauigkeits-, Verlust- und Wahrscheinlichkeitswerte, um die Protokolle lesbarer zu gestalten und Vorhersagen Klassenbezeichnungen zuzuordnen. Die volle Präzision bleibt bei der Gradientenberechnung erhalten, und nur die endgültig angezeigten Metriken werden gerundet.

Ja. KI-Assistenten wie GitHub Copilot vervollständigen round(), np.round() und Dezimalrundung automatisch aus einem Kommentar oder Funktionsnamen, und agentenbasierte Tools wandeln die manuelle Formatierung in round()-Aufrufe um, wobei die gewählte Genauigkeit jedoch noch überprüft werden muss.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: