Zahlen in Python verstehen
Lerne Pythons drei numerische Typen — int, float und complex — mit Arithmetik-Beispielen, Typkonvertierung, Präzisionsfallen und nützlichen Mathematikfunktionen.
Python verfügt über drei eingebaute numerische Typen: ganze Zahlen (int), Gleitkommazahlen (float) und komplexe Zahlen (complex). Diese Seite erklärt, wie jeder Typ funktioniert, wie man mit ihnen rechnet, häufige Stolperstellen, Typkonvertierung und welche Mathematikfunktionen die Standardbibliothek bereitstellt.
Ganze Zahlen (Integer)
Ein Integer ist eine ganze Zahl — positiv, negativ oder null — ohne Dezimalpunkt. In Python haben Integer unbegrenzte Präzision: Es gibt keine feste maximale Größe, wie es sie in C oder Java gibt. Python arbeitet problemlos mit Zahlen, die Hunderte von Stellen haben.
x = 10
y = -5
z = 0
# Python integers have no fixed size limit
big = 2 ** 100
print(big) # 1267650600228229401496703205376Integer-Arithmetik
Beachte, dass / immer einen float zurückgibt, auch wenn das Ergebnis eine ganze Zahl ist (6 / 2 ergibt 3.0). Verwende //, wenn du ein ganzzahliges Ergebnis benötigst.
Integer-Literale: Binär, Oktal und Hexadezimal
Python akzeptiert Integer-Literale in vier Zahlensystemen. Alle vier erzeugen dasselbe int-Objekt — das Präfix gibt Python lediglich an, wie die Ziffern zu interpretieren sind.
decimal = 255 # base 10 — no prefix
binary = 0b11111111 # base 2 — prefix 0b
octal = 0o377 # base 8 — prefix 0o
hexadecimal = 0xFF # base 16 — prefix 0x
print(decimal, binary, octal, hexadecimal)
# 255 255 255 255
# Convert an int back to a string in a given base
print(hex(255)) # '0xff'
print(bin(255)) # '0b11111111'
print(oct(255)) # '0o377'Den Typ prüfen
Verwende type(), um den Typ eines Wertes zu bestätigen, oder isinstance(), um die Zugehörigkeit zu prüfen:
print(type(42)) # <class 'int'>
print(isinstance(42, int)) # TrueGleitkommazahlen (Float)
Ein float ist eine Zahl mit Dezimalpunkt (oder Exponent). Python-Floats sind 64-Bit-IEEE-754-Werte mit doppelter Genauigkeit, was etwa 15–17 signifikante Dezimalstellen ermöglicht.
x = 10.5
y = -5.2
z = 0.0
e = 1.5e3 # scientific notation — same as 1500.0Float-Arithmetik
Gleitkomma-Präzision
Da Floats binär gespeichert werden, können manche Dezimalbrüche nicht exakt dargestellt werden. Dies ist eine Eigenschaft der IEEE-754-Arithmetik, kein Python-Fehler:
print(0.1 + 0.2) # 0.30000000000000004
print(0.1 + 0.2 == 0.3) # FalseWenn exakte Dezimalarithmetik wichtig ist (zum Beispiel bei Finanzberechnungen), verwende statt float das Modul decimal aus der Standardbibliothek.
Runden und nützliche Float-Operationen
import math
print(round(3.14159, 2)) # 3.14 — round to 2 decimal places
print(math.floor(3.7)) # 3 — largest integer <= value
print(math.ceil(3.2)) # 4 — smallest integer >= value
print(math.sqrt(16)) # 4.0 — square root
print(abs(-7.5)) # 7.5 — absolute valueKomplexe Zahlen
Eine komplexe Zahl hat einen Realteil und einen Imaginärteil. In Python (nach technischer Konvention) wird die imaginäre Einheit mit j oder J geschrieben, nicht mit i.
x = 10 + 5j
y = -5 + 3j
z = 0 + 0j # equivalent to complex(0, 0)
w = complex(2, -3) # constructor: real=2, imag=-3Zugriff auf Real- und Imaginärteil
z = 3 + 4j
print(z.real) # 3.0
print(z.imag) # 4.0
print(abs(z)) # 5.0 — magnitude: sqrt(3^2 + 4^2)Arithmetik mit komplexen Zahlen
Komplexe Zahlen können nicht mit < oder > verglichen werden, da es keine natürliche Ordnung in der komplexen Ebene gibt. Nur == und != werden unterstützt.
Typkonvertierung
Python fördert Typen bei Zuweisungen nicht stillschweigend, aber Arithmetik zwischen verschiedenen numerischen Typen folgt klar definierten Regeln:
| Ausdruck | Ergebnistyp |
|---|---|
int + int | int |
int + float | float |
float + complex | complex |
int + complex | complex |
Du kannst Typen explizit mit den eingebauten Konstruktoren konvertieren:
# int → float
print(float(42)) # 42.0
# float → int (truncates toward zero, no rounding)
print(int(3.9)) # 3
print(int(-3.9)) # -3
# str → int or float
print(int("100")) # 100
print(float("3.14")) # 3.14
# int → complex
print(complex(5)) # (5+0j)Beachte, dass die Konvertierung von float zu int abschneidet — es wird nicht gerundet. Verwende zuerst round(), wenn du ein gerundetes Ergebnis benötigst.
Das math-Modul
Das math-Modul bietet zusätzliche mathematische Funktionen für reelle Zahlen.
import math
print(math.pi) # 3.141592653589793
print(math.e) # 2.718281828459045
print(math.log(math.e)) # 1.0 — natural log
print(math.log10(1000)) # 3.0
print(math.pow(2, 10)) # 1024.0 — float result (use ** for int result)
print(math.factorial(5)) # 120
print(math.gcd(12, 8)) # 4Für Operationen mit komplexen Zahlen verwende cmath statt math:
import cmath
z = 1 + 1j
print(cmath.phase(z)) # 0.7853981633974483 — angle in radians (π/4)
print(cmath.polar(z)) # (1.4142135623730951, 0.7853981633974483) — (r, θ)Wann welchen Typ verwenden
| Anwendungsfall | Empfohlener Typ |
|---|---|
| Zählen, Indizieren, Bitoperationen | int |
| Messungen, wissenschaftliches Rechnen | float |
| Signalverarbeitung, Elektrotechnik | complex |
| Finanzberechnungen mit exakter Genauigkeit | decimal.Decimal |
Für verwandte Themen siehe das Kapitel Python-Variablen für die Speicherung von Zahlen in Variablen, das Kapitel Python-Operatoren für den vollständigen Satz numerischer Operatoren und Python Casting für Details zur Typkonvertierung.