Kurs
Zahlen auf zwei Dezimalstellen zu runden, ist eine wichtige Technik in Python. Sie ist besonders nützlich in Finanzberechnungen, bei der Datenpräsentation und in wissenschaftlichen Reports.
Python bietet mehrere Methoden für präzises Runden. In diesem Tutorial zeige ich dir, wie du eine Zahl in Python mit eingebauten Funktionen, Bibliotheken und Formatierungsmethoden auf zwei Dezimalstellen rundest.
Wenn du als Data Analyst durchstartest, empfehle ich dir den Kurs Introduction to Python von DataCamp, um die Python-Grundlagen für Datenmanipulation und -transformation zu lernen. Unser Python NumPy Tutorial hilft dir außerdem, wenn du in Analyse-Workflows große Zahlenarrays runden musst.
TL;DR
-
Verwende
round(number, 2)für arithmetisches Runden — der tatsächliche Wert ändert sich. -
Verwende
f"{number:.2f}"oderstr.format()nur für die Anzeige — der ursprüngliche Float bleibt unverändert. -
Nutze das
decimal-Modul, wenn exakte Dezimalpräzision erforderlich ist (z. B. in Finanzberechnungen). -
Verwende
np.round(array, 2), um ein ganzes NumPy-Array in einem Schritt zu runden. -
Achte auf Float-Präzisionsfallen:
round(2.675, 2)ergibt2.67statt2.68, weil Floats im Speicher binär gespeichert werden.
Fähigkeiten im Bereich Machine Learning aufbauen
Runden und Dezimalstellen verstehen
Dezimalstellen sind die Ziffern direkt nach dem Dezimalpunkt einer Zahl. Sie bestimmen die Genauigkeit einer Zahl: Je mehr Dezimalstellen, desto präziser — und umgekehrt.
Runden bedeutet, eine Zahl so anzupassen, dass sie weniger Dezimalstellen hat. Das vereinfacht Zahlen und sorgt für Konsistenz über Berechnungen hinweg. Beachte aber: Das Runden auf bestimmte Dezimalstellen beeinflusst die Genauigkeit, weil dabei kleine Rundungsfehler entstehen.
Python bietet verschiedene Methoden, um auf zwei Dezimalstellen zu runden. Die folgenden Beispiele erklären diese Techniken im Detail.
Mit round() eine Zahl in Python runden
Die Funktion round() ist Pythons eingebaute Methode, um Gleitkommazahlen auf eine angegebene Zahl von Dezimalstellen zu runden. Die gewünschte Anzahl gibst du als zweiten Parameter an. Das folgende Beispiel gibt 34,15 aus.
# Example number to be rounded
number = 34.14559
# Rounding the number to 2 decimal places
rounded_number = round(number, 2)
print(rounded_number)
# 34.15
Pythons round() verwendet standardmäßig "Round half to even", wenn du das zweite Argument weglässt. Beim Round-half-to-even (Banker's Rounding) wird eine Zahl, die genau zwischen zwei ganzen Zahlen liegt, auf die nächstgelegene gerade ganze Zahl gerundet. Diese Technik hilft, kumulative Rundungsfehler zu minimieren.
Achtung Float-Präzision mit round()
Es gibt eine Feinheit, die du kennen solltest, bevor du dich in Finanzcode auf round() verlässt. Probiere Folgendes:
print(round(2.675, 2)) # You might expect 2.68
# Output: 2.67
Das Ergebnis ist 2.67 statt 2.68. Der Wert 2.675 lässt sich im binären Gleitkommaformat (IEEE 754) nicht exakt darstellen; der gespeicherte Wert ist minimal kleiner als 2.675, daher rundet Python ab.
Wenn du exaktes Runden für Finanzberechnungen brauchst, nutze das decimal-Modul mit einem expliziten Rundungsmodus:
from decimal import Decimal, ROUND_HALF_UP
result = Decimal("2.675").quantize(Decimal("0.01"), rounding=ROUND_HALF_UP)
print(result) # 2.68
Mit String-Formatierung in Python runden
String-Formatierung ist praktisch, um Zahlen für die Ausgabe auf zwei Dezimalstellen zu runden.
Beachte: Beim Runden per String-Formatierung wird die gerundete Zahl als String angezeigt, aber der ursprüngliche numerische Wert bleibt unverändert. Berechnungen auf dem Original nutzen also den ungerundeten Wert — das kann zu überraschenden Ergebnissen führen.
Runden mit dem % Operator
Der %-Operator bietet eine traditionelle Methode, um Zahlen auf zwei Dezimalstellen zu formatieren. Er erzeugt formatierte Strings, indem Werte in Platzhalter eingefügt werden.
Im Beispiel unten kennzeichnet f einen Gleitkommawert, während .2 die gewünschte Anzahl an Dezimalstellen angibt.
# Example number to be rounded
number = 3.14159
# Using the % operator to round to 2 decimal places
formatted_number = "%.2f" % number
print(formatted_number)
# 3.14
Runden mit str.format()
Die Methode str.format() ist flexibel für komplexere Formatierungen. Durch benannte Platzhalter ist sie oft angenehmer als der %-Operator. Im Beispiel unten gibt :.2f in geschweiften Klammern an, dass auf zwei Dezimalstellen gerundet wird. Der Code gibt 3.14 aus.
# Example number to be rounded
number = 3.14159
# Using str.format() to round to 2 decimal places
formatted_number = "{:.2f}".format(number)
print(formatted_number)
# 3.14
Runden mit f-Strings (Python 3.6+)
F-Strings kamen mit Python 3.6 und sind heute der bevorzugte Weg, Werte in Strings einzubetten. Die f-String-Syntax ist fürs Runden besonders elegant: Anzeigeformatierung in einer Zeile ohne separaten Aufruf. Der folgende Code druckt 14.68.
# Example number to be rounded
number = 14.67856
# Using f-strings to round to 2 decimal places
formatted_number = f"{number:.2f}"
print(formatted_number)
# 14.68
Mit format() eine Zahl in Python runden
Die eingebaute Funktion format() nimmt einen Wert und eine Formatspezifikation und liefert einen formatierten String zurück. Anders als bei str.format() übergibst du die Zahl direkt, statt sie in eine Vorlagensyntax einzubetten. Der Code unten gibt 345.69 aus.
# Example number to be rounded
number = 345.68776
# Using the built-in format() to round to 2 decimal places
formatted_number = format(number, ".2f")
print(formatted_number)
# 345.69
Weitere Module zum Runden in Python
Neben Basis-Python gibt es weitere Module, mit denen du runden kannst. Ich zeige dir die drei wichtigsten: math, decimal und NumPy.
Runden mit dem math-Modul
Das math-Modul bietet keine Funktion, die direkt auf eine bestimmte Dezimalstellenzahl rundet. Du kannst es aber mit einfacher Arithmetik kombinieren, um auf zwei Dezimalstellen zu runden.
Die Funktion math.floor() rundet auf die nächstkleinere ganze Zahl ab. Um auf zwei Dezimalstellen abzurunden, multiplizierst du die Zahl mit 100, wendest math.floor() an und teilst wieder durch 100. Der Code unten gibt 3.14 aus.
# Import math module
import math
# Example number to be rounded
number = 3.14159
# Using math.floor() to round down to 2 decimal places
rounded_down = math.floor(number * 100) / 100
print(rounded_down)
# 3.14
Analog rundet math.ceil() auf die nächstgrößere ganze Zahl auf. Um auf zwei Dezimalstellen aufzurunden, multiplizierst du mit 100, wendest math.ceil() an und teilst durch 100. Der Code unten gibt 3.15 aus.
# Import the math module
import math
# Example number to be rounded
number = 3.14159
# Using math.ceil() to round up to 2 decimal places
rounded_up = math.ceil(number * 100) / 100
print(rounded_up)
# 3.15
Runden mit dem decimal-Modul
Das decimal-Modul in Python eignet sich, um Fließkommazahlen mit exakten Dezimalstellen per .quantize() zu runden. Im Beispiel unten setzen wir die Präzision auf 0.01, um auf zwei Dezimalstellen zu runden.
# Import the decimal module
from decimal import Decimal
# Example number to be rounded
number = Decimal("18.73869")
# Define the rounding precision to 2 decimal places
precision = Decimal('0.01')
# Using the quantize method with ROUND_UP
# to round the number up to 2 decimal places
rounded_number = number.quantize(precision)
print(rounded_number)
# 18.74
Wenn du ein konsequentes Aufrunden brauchst, lies unser aktuelles Tutorial How to Round Up a Number in Python, um mehr über math und decimal sowie weitere Techniken zu lernen, die immer aufrunden statt abrunden. Wenn du Datentransformation allgemein vertiefen willst, schau dir unseren Data Analyst with Python Karriere-Lernpfad an, um deine analytischen Kompetenzen auszubauen.
Runden mit NumPy
Wenn du mit Arrays in NumPy arbeitest, nutze np.round(), um alle Elemente auf einmal zu runden. Das ist schneller und lesbarer, als manuell über Werte zu iterieren.
import numpy as np
prices = np.array([1.2345, 9.8765, 3.14159])
rounded_prices = np.round(prices, 2)
print(rounded_prices)
# [1.23 9.88 3.14]
np.round() verwendet dieselbe Banker's-Rounding-Regel wie Pythons round(). Die Methode .round() funktioniert auf pandas DataFrames und Series genauso:
import pandas as pd
df = pd.DataFrame({"price": [1.2345, 9.8765, 3.14159]})
df["price_rounded"] = df["price"].round(2)
print(df)
# price price_rounded
# 0 1.2345 1.23
# 1 9.8765 9.88
# 2 3.14159 3.14
Einen umfassenderen Einstieg in Datentransformation mit pandas findest du in unserem pandas Tutorial.
Wann welche Python-Rundungsmethode?
Hier ist eine kurze Entscheidungshilfe für die richtige Methode:
| Methode | Am besten geeignet für | Ändert den Wert? | Gibt zurück |
|---|---|---|---|
round(x, 2) |
Allgemeine Arithmetik | Ja | float |
f"{x:.2f}" |
Anzeige / Print | Nein | str |
str.format() |
Anzeige / Print | Nein | str |
% operator |
Anzeige / Print (Legacy) | Nein | str |
format(x, ".2f") |
Anzeige / Einzelwert | Nein | str |
math.floor() / ceil() |
Immer abrunden / immer aufrunden | Ja | float |
Decimal.quantize() |
Finanzen / exakte Dezimalzahlen | Ja | Decimal |
np.round(arr, 2) |
NumPy-Arrays | Ja | ndarray |
Ein paar Faustregeln für die Auswahl:
-
Nur anzeigen? Nutze einen f-String (
f"{x:.2f}"). Eine Zeile, keine Importe, keine Seiteneffekte auf den Originalwert. -
Weiterrechnen mit dem Ergebnis? Verwende
round(x, 2). Es liefert einen Float, mit dem du weiterrechnen kannst. -
Finanz- oder Buchhaltungscode? Nutze
Decimal.quantize(). Präzisionsfallen mit Floats (round(2.675, 2) == 2.67) treten mit demdecimal-Modul nicht auf. -
Immer auf oder immer ab? Nutze
math.ceil()odermath.floor(). Diese ignorieren übliche Rundungsregeln bewusst. -
Mit einem NumPy-Array oder einer pandas-Spalte arbeiten? Verwende
np.round(arr, 2)oderseries.round(2). Beide verarbeiten die gesamte Sammlung auf einmal. -
Alten Code pflegen? Der
%-Operator funktioniert noch, aber f-Strings haben ihn seit Python 3.6 ersetzt — in neuem Code besser f-Strings nutzen.
Fazit
Zahlen auf zwei Dezimalstellen zu runden, ist zentral für präzisere Finanz- und Wissenschaftsberechnungen. In diesem Artikel haben wir verschiedene Methoden behandelt — von eingebauten Funktionen über String-Formatierung bis zum math-Modul. Entscheidend ist, die passende Methode je nach Anforderung zu wählen, etwa hinsichtlich Präzision oder Ausgabeformat. Übe die verschiedenen Ansätze mit eigenen Beispielen, um das beste Vorgehen für deine Use Cases zu finden.
Wenn du deine Python-Kompetenzen ausbauen willst, schau dir unseren Python Programming Skill-Lernpfad an — mit Funktionen, Dekoratoren und fortgeschrittenen Python-Patterns. Unser Python Developer Karrierepfad hilft dir außerdem, dich als Entwickler weiterzubilden und fortgeschrittene Datenstrukturen und Algorithmen zu meistern.
Werde ein ML-Wissenschaftler
Häufig gestellte Fragen
Wie runde ich in Python am einfachsten auf zwei Dezimalstellen?
Am einfachsten rundest du mit der eingebauten Funktion round() auf zwei Dezimalstellen.
Warum rundet die Funktion round() ohne zweiten Parameter auf die nächstliegende ganze Zahl?
Die Standardmethode von round() ist Round half to even. Um auf zwei Dezimalstellen zu runden, musst du den zweiten Parameter als 2 angeben, also round(3.14159, 2).
Wie nutze ich die Funktion format(), um auf zwei Dezimalstellen zu runden?
Die Funktion format() rundet eine Zahl auf die angegebene Zahl von Dezimalstellen und gibt sie als formatierten String aus.
Was bedeutet Round half to even?
Round half to even, auch Banker's Rounding, rundet einen Wert, der genau zwischen zwei ganzen Zahlen liegt, auf die nächstgelegene gerade ganze Zahl.
Bietet das math-Modul ein direktes Runden auf zwei Dezimalstellen in Python?
Mit math.floor() und math.ceil() kannst du nur in Kombination mit einfacher Arithmetik auf eine bestimmte Dezimalstellenzahl runden.
Warum ergibt round(2.675, 2) den Wert 2.67 statt 2.68?
Das ist ein Gleitkomma-Präzisionsproblem. Der Wert 2.675 lässt sich im binären Gleitkommaformat (IEEE 754) nicht exakt darstellen; der gespeicherte Wert ist minimal kleiner als 2.675, daher rundet Python auf 2.67 ab.
Um das in Finanzcode zu vermeiden, nutze das decimal-Modul mit explizitem Rundungsmodus: Decimal("2.675").quantize(Decimal("0.01"), rounding=ROUND_HALF_UP) ergibt wie erwartet 2.68.
Wie runde ich alle Werte in einem pandas DataFrame auf 2 Dezimalstellen?
Nutze die Methode .round() auf DataFrame oder Series. Eine einzelne Spalte runden: df["price"] = df["price"].round(2). Alle numerischen Spalten auf einmal runden: df = df.round(2).



