Der Software-Gigant Microsoft sah sich im Jahr 2007 mit einem kuriosen Problem konfrontiert, das die digitale Welt in Aufruhr versetzte: Ein Fehler in der neuesten Version von Excel, Excel 2007, führte dazu, dass eine einfache Multiplikation wie 77.1 * 850, deren Ergebnis korrekt 65.535 sein sollte, stattdessen den Wert 100.000 anzeigte. Dieser sogenannte Excel 2007 Fehler sorgte für Verwirrung und führte zu Diskussionen über die Genauigkeit digitaler Berechnungen. Als ehemaliger Mitarbeiter des Excel-Teams, wenn auch aus längst vergangenen Zeiten, möchte ich hier die Hintergründe dieses Bugs beleuchten und seine wahre Tragweite einordnen.
Es ist wichtig zu verstehen, dass dieser Fehler zwar echt war, seine Auswirkungen auf alltägliche Berechnungen jedoch mikroskopisch gering. Dennoch bietet er eine faszinierende Einsicht in die Komplexität der digitalen Zahlendarstellung und die Feinheiten der Softwareentwicklung. Die Diskussion um diesen Fehler wirft auch Fragen bezüglich der Zuverlässigkeit von Tabellenkalkulationen und der zugrunde liegenden Arithmetik auf, die für professionelle Anwendungen entscheidend sein kann. Wer auf leistungsstarke Office-Anwendungen angewiesen ist, findet oft bei Word und Excel 2019 bewährte Lösungen.
Die Tücke der digitalen Darstellung: Intern vs. Anzeige
Das grundlegende Prinzip, das hinter diesem Excel-Fehler steckt, ist die Art und Weise, wie Computer Zahlen intern speichern und wie sie diese für den Benutzer anzeigen. Excel speichert Zahlen intern in einem binären Format, verwendet also Nullen und Einsen. Zum Beispiel wird die Zahl 77.1 intern als eine 64-Bit-Sequenz dargestellt:
0100 0000 0101 0011 0100 0110 0110 01100110 0110 0110 0110 0110 0110 0110 0110
Wenn Sie jedoch 77.1 in eine Zelle eingeben, sehen Sie vier Zeichen: “7”, “7”, “.”, und “1”. Irgendwo in Excel befindet sich eine Funktion, die binäre Zahlen zur Anzeige in Zeichenketten umwandelt. Genau in diesem Code für die Zahlenformatierung lag der Bug, der dazu führte, dass einige Zahlen, die extrem nahe an 65.535 lagen, fälschlicherweise als 100.000 formatiert wurden.
Das Faszinierende daran war, dass der Fehler ausschließlich die Anzeige betraf, nicht die eigentliche Berechnung. Wenn Sie das Ergebnis dieser fehlerhaften Anzeige in weiteren Berechnungen verwendeten, beispielsweise wenn Sie 2 zum angezeigten Wert addierten, erhielten Sie das korrekte Ergebnis:
=77.1 * 850 führte zur Anzeige 100.000 (fehlerhaft)=77.1 * 850 + 2 führte zur Anzeige 65.537 (korrekt)
Der Fehler zeigte sich auch bei Zahlen, die extrem nahe an 65.536 lagen, die dann fälschlicherweise als 100.001 angezeigt wurden. Auch hier galt: Es war ein reiner Anzeigefehler. Wenn Sie aus einer solchen Zahl ein Diagramm erstellten, wurde das Diagramm korrekt dargestellt. Wer sich für die Tiefen von Microsoft Excel interessiert, findet umfassende Informationen zum Kauf von Microsoft Excel.
Das Kernproblem: Die Herausforderung der Fließkommazahlen
Bevor wir uns dem spezifischen Excel-Bug widmen, müssen wir ein grundlegendes Konzept der digitalen Arithmetik verstehen: die Darstellung von Fließkommazahlen. Mir ist aufgefallen, dass ich oben sagte, der Bug existiere für Zahlen, die extrem nahe an 65.535 liegen, aber nicht für 65.535 selbst. Doch 77.1 * 850 sollte exakt 65.535 ergeben, nicht nur extrem nahe daran!
Schauen Sie sich die binäre Darstellung von 77.1 noch einmal genau an. Sie sehen viele Wiederholungen von 0110 0110 0110 am Ende. Das liegt daran, dass 0.1 keine exakte Darstellung im Binärsystem hat. Es ist eine sich wiederholende Binärzahl. Das ist vergleichbar mit 1/3 im Dezimalsystem: 1/3 ist 0.33333333… und Sie müssten unendlich viele Dreien schreiben. Wenn Sie die Geduld verlieren, erhalten Sie etwas Ungenaues.
Man kann sich vorstellen, wie im Dezimalsystem, wenn man 3 * 1/3 berechnen würde und keine Zeit hätte, die Dreien unendlich weiterzuschreiben, das Ergebnis 0.99999999 und nicht 1 wäre. Das Gleiche passiert im Binärsystem mit Zahlen, die auf .1 enden: Sie sind sich wiederholende Dezimalzahlen, sodass bei mathematischen Operationen sehr kleine, unbedeutende Fehler irgendwo weit rechts vom Dezimalpunkt auftreten. (Dies gilt übrigens auch für .2, .3, .4, .6, .7, .8 und .9, aber nicht für .5).
Das IEEE (Institute of Electrical and Electronics Engineers) hat einen Standard, IEEE 754, für die Darstellung von Fließkommazahlen im Binärsystem. Diesen Standard verwenden fast alle, einschließlich Excel, und das schon seit sehr langer Zeit. Es bedeutet, dass man manchmal unpräzise Ergebnisse erhält, wenn man viele 0.1er addiert. Wenn man die Zahlen jedoch auf eine vernünftige Anzahl von Dezimalstellen rundet, spielt dies in der Regel keine Rolle.
Der spezifische Excel 2007 Bug: Ein Präzisionsproblem der Anzeige
Zurück zum Excel-Bug, der ein echter Fehler war und nicht nur ein Artefakt dieser IEEE 754-Problematik. Da 77.1 keine exakte Darstellung hat, speichert Excel es wie oben gezeigt. Wenn Sie es dann mit 850 multiplizieren, erhalten Sie etwas, das sehr nahe an 65.535 liegt, aber nicht exakt 65.535. Das liegt daran, dass 77.1 nicht exakt gespeichert werden konnte, da dies unendlich viel Speicherplatz erfordern würde. Und genau diese Zahl, die sehr nahe an 65.535 liegt, war eine von nur 12 möglichen Fließkommazahlen, die diesen Bug in Excel ausgelöst haben. Es war also ein sehr spezifischer Anzeigefehler, der nur unter bestimmten, seltenen Bedingungen auftrat.
Häufig gestellte Fragen (FAQ)
Ist dieser Fehler wirklich so gravierend?
Meiner Meinung nach: Nein. Die Wahrscheinlichkeit, dass Sie diesen Fehler in realen Berechnungen bemerken würden, ist mikroskopisch gering. Sie sollten sich eher Sorgen machen, von einem Meteoriten getroffen zu werden. Microsoft war natürlich gezwungen, allen zu versichern, dass “Genauigkeit für uns extrem wichtig ist”, und es gab innerhalb weniger Tage einen Fix. Doch als jemand, der nicht mehr dort arbeitet, kann ich Ihnen sagen, dass die Wahrscheinlichkeit, dass dieser Fehler Sie als Einzelperson tatsächlich betroffen hätte, atemberaubend gering war.
Sollten solche Fehler nicht gründlich getestet werden?
Ich wette, dass die meisten numerischen Tests im Excel-Team automatisch mit VBA-Code durchgeführt werden. Zellen, die diesen Wert enthalten, werden als 100.000 angezeigt, aber aus VBA heraus würden sie als 65.535 erscheinen (da die Zahl im Binärformat an die Basic-Laufzeitumgebung übergeben würde, bevor die Anzeigeformattierung erfolgte). Es gab sicherlich viel Code, um die Anzeigeformatierung zu testen, aber bei einem solchen Bug, der nur bei 12 von 18446744073709551616 möglichen Fließkomma-Binärzahlen auftritt, ist es unwahrscheinlich, dass eine Reihe von Black-Box-Tests diesen Fall abdecken würde. Eine vielseitige Software wie Open Office Online Excel bietet oft eine robuste Alternative.
Was ist die genaue Ursache des Fehlers?
Ich bin mir nicht sicher, da ich den Code nicht habe. Spontan fällt mir nichts ein, was dieses Verhalten verursachen würde. Man könnte mit Quanfei Wens IEEE-754-Rechner herumspielen, vielleicht findet man dort etwas.
Warum verwendet Excel keine “exakte” Dezimalarithmetik?
Dezimale Arithmetik ist viel langsamer als Fließkomma-Arithmetik, da es auf dem CPU-Chip keine Hardware gibt, die dies nativ für Sie erledigt. Im Laufe der Jahre erhielt Microsoft so viel Kritik wegen der Fließkomma-Rundungsartefakte im Windows-Rechner, dass sie ihn neu schrieben, um eine Arbitrary-Precision-Arithmetik-Bibliothek zu verwenden. Da der Windows-Rechner nicht so schnell sein muss wie Excel, ist das dort praktikabel. Heutzutage sind CPUs jedoch ziemlich schnell geworden. Ich wette, eine Arbitrary-Precision-Version von Excel würde heutzutage ziemlich gut funktionieren. Trotzdem hat das Microsoft Excel-Supportteam die letzten 20 Jahre damit verbracht, IEEE 754 zu verteidigen, und es ist nicht überraschend, dass sie daran zu glauben begonnen haben. Und seien wir ehrlich – wollen Sie wirklich, dass die schlauen Köpfe, die dort jetzt arbeiten und es schaffen, viele perfekt funktionierende Codes zu zerbrechen, die Kernberechnungsengine in Excel neu schreiben? Besser, man hält sie den ganzen Tag damit beschäftigt, tanzende Büroklammern hinzuzufügen und zu entfernen. Wer sich generell für den Kauf von Office-Produkten interessiert, findet unter Word Excel Kaufen eine gute Anlaufstelle.
Fazit
Der Excel 2007 Fehler war ein bemerkenswertes Beispiel dafür, wie komplexe Software und die inhärenten Herausforderungen digitaler Zahlendarstellung zu überraschenden Ergebnissen führen können. Obwohl der Fehler in der Öffentlichkeit viel Aufmerksamkeit erregte und Microsoft zu einem schnellen Fix zwang, war seine praktische Relevanz für die meisten Nutzer gering. Er verdeutlicht jedoch die Bedeutung eines tiefgreifenden Verständnisses für die Funktionsweise von Software, insbesondere in kritischen Anwendungen. Für Unternehmen und Privatpersonen, die auf genaue und zuverlässige Tabellenkalkulationen angewiesen sind, ist es entscheidend, stets aktuelle Software zu verwenden und sich über mögliche Einschränkungen im Klaren zu sein.
