Wie Computer mit Kommazahlen umgehen
23.11.2025 4 Min. Lesezeit
Fließkommazahlen verstehen - Wie Computer mit Kommazahlen umgehen
Im vorherigen Artikel haben wir gesehen, dass Computer alle Informationen letztlich als Bits speichern und dass Datentypen nur Interpretationen dieser Bitmuster sind. Für ganze Zahlen (Integer) funktioniert das vergleichsweise einfach: Wir zählen binär und sind fertig.
Doch die reale Welt besteht nicht nur aus ganzen Zahlen. Längen, Gewichte, Geldbeträge, physikalische Größen - all das benötigt Kommazahlen. Und genau hier beginnt ein spannendes - und oft überraschendes - Kapitel der Informatik: Fließkommazahlen (Floating Point Numbers).
Warum Kommazahlen ein Problem sind
Auf den ersten Blick scheint es trivial:
Warum speichern wir nicht einfach Zahlen wie 3.14 genauso wie 314 - nur mit einem „Komma“?
Das Problem ist: Ein Computer kennt kein echtes Komma. Er kennt nur feste Bitmuster. Und vor allem: Speicher ist endlich.
Während eine Zahl wie 42 exakt darstellbar ist (sie hat eine endliche binäre Darstellung), sieht das bei vielen Dezimalzahlen anders aus. Ein einfaches Beispiel:
0.1 (dezimal)
Diese Zahl hat im Binärsystem keine endliche Darstellung. Sie wird zu einer unendlichen, periodischen Folge von Bits - ähnlich wie 1/3 = 0.3333... im Dezimalsystem.
Das bedeutet:
👉 Der Computer muss abschneiden und arbeitet daher immer mit einer Näherung.
Die Idee hinter Floating Point
Um mit sehr großen und sehr kleinen Zahlen effizient arbeiten zu können, bedienen sich Computer eines Tricks, den du vielleicht aus der Schule kennst: der wissenschaftlichen Notation.
Statt eine Zahl vollständig auszuschreiben, zerlegen wir sie:
12345 = 1.2345 × 10^4
Dasselbe Prinzip wird in Computern verwendet - nur im Binärsystem.
Eine Fließkommazahl besteht aus drei Teilen:
- Vorzeichen (Sign) - ist die Zahl positiv oder negativ?
- Exponent - wie stark wird skaliert?
- Mantisse (Signifikand) - die eigentlichen „signifikanten Stellen“
Ein Blick in die Praxis: IEEE 754
Nahezu alle modernen Computer verwenden den Standard IEEE 754 zur Darstellung von Fließkommazahlen.
Ein häufig verwendetes Format ist die sogenannte 32-Bit-Float (Single Precision):
| Teil | Größe |
|---|---|
| Vorzeichen | 1 Bit |
| Exponent | 8 Bit |
| Mantisse | 23 Bit |
Diese 32 Bits werden also aufgeteilt, um eine einzelne Zahl darzustellen.
Wie daraus eine Zahl entsteht
Das Schema lautet (vereinfacht):
Wert = (-1)^Vorzeichen × 1.Mantisse × 2^(Exponent - Bias)
Das klingt kompliziert, aber die Idee ist simpel:
- Das Vorzeichen entscheidet über + oder -
- Der Exponent verschiebt die Größenordnung
- Die Mantisse enthält die eigentlichen Ziffern
Der sogenannte Bias ist eine technische Anpassung, damit der Exponent auch negative Werte darstellen kann.
Ein anschauliches Beispiel
Nehmen wir eine Zahl wie:
5.5 (dezimal)
Im Binärsystem entspricht das:
101.1
In normierter Form:
1.011 × 2^2
Jetzt passiert Folgendes:
- Vorzeichen = 0 (positiv)
- Exponent = 2 (entsprechend codiert)
- Mantisse = 011 (der Teil nach der führenden 1)
So entsteht die gespeicherte Bitfolge.
Die große Herausforderung: Genauigkeit
Hier kommt der entscheidende Punkt, den viele Anfänger überrascht:
Die meisten Kommazahlen sind im Computer nicht exakt darstellbar.
Ein klassisches Beispiel:
0.1 + 0.2 = 0.30000000000000004
Das liegt nicht an einem „Fehler“ des Computers, sondern daran, dass:
- 0.1 und 0.2 intern nur Näherungen sind
- beim Addieren sich diese kleinen Fehler aufsummieren
Warum das wichtig ist
Diese Ungenauigkeiten haben reale Konsequenzen:
Vergleich von Zahlen
if (a == b):
Kann fehlschlagen, obwohl beide Werte „gleich aussehen“. Deshalb verwendet man oft Toleranzen:
abs(a - b) < 1e-9
Rundungsfehler
In langen Berechnungen können sich kleine Fehler verstärken. Besonders kritisch ist das in:
- Finanzanwendungen
- physikalischen Simulationen
- Grafikberechnungen
Zahlenbereich vs. Genauigkeit
Ein weiterer wichtiger Trade-off:
Mehr Bits bedeuten entweder größere Zahlen oder höhere Genauigkeit - aber nie beides gleichzeitig in unendlicher Form.
Bei 32-Bit-Floats gibt es Grenzen:
- sehr große Zahlen (z. B. 103810^{38}1038)
- aber nur begrenzte Präzision (~7 Dezimalstellen)
Für mehr Genauigkeit nutzt man 64-Bit-Floats (Double Precision).
Spezialfälle: Ein kurzer Blick
IEEE 754 definiert auch einige besondere Werte:
- +∞ / -∞ → unendliche Werte (z. B. Division durch 0)
- NaN (Not a Number) → ungültige Ergebnisse (z. B. 0/0)
Diese Werte machen das System robuster, da Fehler explizit darstellbar sind.
Ein mentales Modell für Anfänger
Wenn du dir Fließkommazahlen merken willst, denke so:
Ein Float ist wie eine wissenschaftliche Schreibweise mit begrenzter Genauigkeit.
Oder noch einfacher:
Fazit: Mächtig, aber tückisch
Fließkommazahlen sind unverzichtbar für moderne Software. Ohne sie gäbe es keine:
- 3D-Grafik
- Physiksimulationen
- wissenschaftliche Berechnungen
- Machine Learning
Aber sie kommen mit einem Preis:
- begrenzte Genauigkeit
- Rundungsfehler
- unerwartetes Verhalten bei Vergleichen
Das Verständnis dieser Eigenschaften ist ein entscheidender Schritt vom „Code-Nutzer“ zum „System-Versteher“.
Ausblick und praktische Konsequenz
Wenn du künftig mit Zahlen arbeitest, solltest du dich immer fragen:
Brauche ich exakte Werte → dann eher Integer verwenden (z. B. Cent statt Euro)
Brauche ich Näherungen → dann Floats bewusst einsetzen
Denn am Ende gilt:
Der Computer rechnet nicht falsch - er rechnet exakt das, was gespeichert wurde. Und das ist bei Floats eben oft nur eine Annäherung.