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
console.log(0.1 + 0.2); // 0.30000000000000004
console.log(0.1 + 0.2 === 0.3); // falseBei 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
Junior Frontend Developer 2026
Was du wirklich wissen musst, um 2026 einen Junior-Frontend-Job zu bekommen, und was warten kann – abgeleitet aus echten Stellenanzeigen.
SQL oder NoSQL?
Beantworte sechs Fragen, und ich sage dir, welche Art von Datenbank zu deinem Projekt passt und warum.