IT-Mathematik
Gleitkommazahlen und Rundungsfehler
Lernziele dieser Lektion
- Sie verstehen, warum Computer reelle Zahlen nur näherungsweise speichern können
- Sie kennen den Unterschied zwischen Festkomma- und Gleitkommazahlen
- Sie können erklären, warum 0,1 + 0,2 ≠ 0,3 in vielen Programmiersprachen herauskommt
- Sie erkennen typische Situationen, in denen Rundungsfehler gefährlich werden (Geldbeträge, lange Summen)
- Sie kennen Faustregeln zum sicheren Vergleichen von Gleitkommazahlen
Warum ist das überhaupt ein Problem?
In Lektion 1 dieses Moduls haben Sie gesehen, wie Computer Ganzzahlen im Binärsystem speichern. In Lektion 2 haben Sie Zweierpotenzen kennengelernt. Beide Konzepte kommen jetzt zusammen: Wie speichert ein Rechner eine Zahl wie oder - Zahlen, die keine ganzzahligen Bits sind?
Ein Computer hat nur endlich viele Bits pro Zahl (meist 32 oder 64). Damit lassen sich höchstens bzw. verschiedene Werte darstellen. Die reellen Zahlen sind aber überabzählbar unendlich viele. Deshalb kann der Computer die allermeisten reellen Zahlen nur annähern - und das ist die Quelle von Rundungsfehlern.
Zwei Wege, Kommazahlen zu speichern
Es gibt zwei grundlegend unterschiedliche Ansätze:
- Festkomma (fixed-point): Das Komma steht an einer fixen Position. Beispiel: Beträge in Cent speichern, nie in Euro mit Komma. 1 EUR = 100, 23,45 EUR = 2345. Keine Rundungsfehler, aber eingeschränkter Bereich.
- Gleitkomma (floating-point): Die Position des Kommas "gleitet". So wie im Dezimalsystem , speichert der Computer Mantisse und Exponent getrennt. Riesiger Zahlenbereich, dafür Rundungsfehler.
Wissenschaftliche Schreibweise im Binärsystem
In Modul 2 haben Sie die wissenschaftliche Schreibweise im Dezimalsystem kennengelernt: . Gleitkommazahlen funktionieren genauso, nur zur Basis 2:
Struktur einer Gleitkommazahl (IEEE 754)
Jede Gleitkommazahl wird gespeichert als:
Ein 64-Bit-Double (Standardformat in den meisten Sprachen) verteilt die 64 Bits so:
- 1 Bit für das Vorzeichen (0 = positiv, 1 = negativ)
- 11 Bits für den Exponenten (Zahlenbereich ca. bis )
- 52 Bits für die Mantisse (ergibt etwa 15-17 signifikante Dezimalstellen)
Ein 32-Bit-Float hat entsprechend weniger: 8 Bits Exponent, 23 Bits Mantisse - nur 7-8 signifikante Stellen.
Dies ist nur ein kurzer Auszug. Die vollständige Lektion mit interaktiven Übungen und Lernfortschritts-Tracking gibt es nach Einlösung eines Einschreibeschlüssels.