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: