Artikel

Warum 0.1 + 0.2 nicht 0.3 ergibt

Gib `0.1 + 0.2` in deine Konsole ein, und du bekommst nicht `0.3`. Das ist kein JavaScript-Bug – in Python, Java oder Go kommt exakt dasselbe heraus. IEEE 754, Mantissen und warum du Geld niemals als Float speichern solltest.

Furkan Özay15. September 2026 · 2 Min. Lesezeit
czCZAY.DEV // EDITORIALDE
JAVASCRIPT CORE

#Web Temelleri · 2 MIN LESEZEIT

FURKAN ÖZAYVOL. 2026 // #3273
JS

Gib 0.1 + 0.2 in deine Konsole ein. Das Ergebnis ist 0.30000000000000004. Du verwendest keine fehlerhafte Bibliothek, dein Browser ist nicht kaputt – und ein JavaScript-Bug ist es ebenfalls nicht. Probier es in Python, Java, Go oder einer beliebigen anderen Sprache aus, und du bekommst genau dasselbe Ergebnis. Denn alle folgen demselben Standard: IEEE 754.

Das Problem mit der Basis

Im Dezimalsystem lässt sich 1/3 nicht sauber darstellen; 0.333... wiederholt sich endlos. Computer haben genau dasselbe Problem, nur im Zweiersystem. Binär ist 0.1 gleich 0.000110011... – ein unendlich periodischer Bruch. Eine Zahl, die im Dezimalsystem trivial aussieht, wird im Zweiersystem unmöglich.

Die 64-Bit-Grenze

Eine JavaScript-Zahl belegt im Speicher 64 Bit: ein Vorzeichenbit, elf Exponentenbits und zweiundfünfzig Mantissenbits (Nachkommastellen). Die unendlich periodische Binärdarstellung von 0.1 wird nach diesen zweiundfünfzig Bits abgeschnitten. Übrig bleibt ein winziger, nicht wahrnehmbarer Rundungsfehler. Addierst du die Einzelfehler von 0.1 und 0.2, landest du bei 0.30000000000000004.

Bei einer Operation unsichtbar, bei Millionen katastrophal

JavaScript
console.log(0.1 + 0.2); // 0.30000000000000004
console.log(0.1 + 0.2 === 0.3); // false

Bei einer einzelnen Addition geht durch diese Abweichung nichts kaputt. Aber bei Hunderten von Additionen in einem Warenkorb oder Millionen von Transaktionen in einem Buchhaltungssystem summiert sich der Fehler. Irgendwann fehlt ein Cent. Die Bücher gehen nicht auf, und Tests schlagen sporadisch fehl.

Warnung: Speichere Geld nie als Float

Lege die Grundregel sofort fest: Speichere Währungsbeträge niemals als Gleitkommazahl. Speichere sie als Ganzzahl in Cent (oder der kleinsten Einheit) und teile erst kurz vor der Anzeige auf dem Bildschirm. Wenn du Zahlen vergleichen musst, prüfe nicht auf direkte Gleichheit, sondern gegen eine winzige Toleranz: Math.abs(a - b) < Number.EPSILON.

Fazit

Das ist bis heute eine beliebte Interviewfrage – nicht wegen eines zufälligen Programmierfallstricks, sondern weil sie eine grundlegende Einschränkung offenlegt, wie Computer Zahlen darstellen. Lege diese Regel gleich zu Beginn in jedem System fest, das mit Geld zu tun hat, und du musst dir nie wieder Gedanken darüber machen.

Interaktive Roadmap & Tool

Als Nächstes lesen