Die Python-Funktion float() konvertiert eine Eingabe in eine Fließkommazahl (Double-Precision IEEE-754, 64 Bit). Sie akzeptiert Zahlen, Strings mit numerischen Inhalten und besondere Bezeichner für Unendlichkeit (inf) und Not-a-Number (nan). Ohne Argument liefert float() 0.0.
Einleitung
float() ist sowohl der Konstruktor des Datentyps float als auch eine Konvertierungsfunktion. Sie nimmt eine Eingabe und liefert einen IEEE-754-Double — den Standard für Fließkommazahlen in nahezu allen modernen Programmiersprachen. Die Genauigkeit liegt bei rund 15–17 signifikanten Dezimalstellen.
Über numerische Werte hinaus akzeptiert float() auch Strings (mit optionalem Vorzeichen, Dezimalpunkt, wissenschaftlicher Notation und Underscores als Tausender-Trenner) sowie die speziellen Bezeichner "inf", "-inf" und "nan". Custom-Klassen können __float__() oder __index__() implementieren, um konvertierbar zu werden.
Syntax
float() # → 0.0
float(x) # x: int, float, str oder Objekt mit __float__x Eine Zahl (int, float), ein String mit numerischem Inhalt oder ein Objekt, das __float__() oder __index__() implementiert.
Rückgabewert
Eine float-Instanz. Bei nicht-konvertierbaren Strings wird ein ValueError ausgelöst, bei nicht unterstützten Typen ein TypeError.
Beispiele
Aus int und String
print(float(42))
print(float("3.14"))
print(float(" -2.5 ")) # Whitespace ist ok
print(float("1e3")) # Wissenschaftliche Notation42.0
3.14
-2.5
1000.0Sonderwerte: inf und nan
print(float("inf"))
print(float("-inf"))
print(float("nan"))inf
-inf
nanUnderscores als Lesehilfe
print(float("1_000_000.50"))1000000.5Fehler bei ungültigem String
try:
float("abc")
except ValueError as e:
print(e)could not convert string to float: 'abc'Praktische Beispiele
Float-Vergleich mit Toleranz
# Klassische Falle:
print(0.1 + 0.2 == 0.3)
# Korrekt mit math.isclose:
import math
print(math.isclose(0.1 + 0.2, 0.3))False
TrueMaximalwert in Algorithmen mit inf
numbers = [4, 7, 1, 9, 2, 5]
smallest = float("inf")
for n in numbers:
if n < smallest:
smallest = n
print(smallest)1NaN korrekt prüfen
import math
nan = float("nan")
print(nan == nan) # NaN ist nie gleich sich selbst
print(math.isnan(nan)) # Korrekte PrüfungFalse
TruePraktische Hinweise
- Präzision:
floatist IEEE-754 Double — ca. 15–17 signifikante Dezimalstellen. Für exakte Dezimalrechnung (z. B. Money) istdecimal.Decimaldie richtige Wahl. - NaN ist nicht gleich sich selbst:
float('nan') == float('nan')→False. Verwendemath.isnan()zur Prüfung. inffür Maximalwerte: praktisch in Algorithmen (min_value = float('inf')).- Locale ignoriert:
float()parst nur Point (.) als Dezimaltrenner, nicht Komma.