Problem:
Von Zeit zu Zeit geistern die wildesten Schreckensmeldungen durch die Computerszene. Der letzte Hit waren die Rechenfehler des Pentium-Prozessors, welche Mac-Anwender bestenfalls freudig grinsen ließen. Es war ja auch zu ungeschickt, diese monatelang zu verheimlichen, anstatt – wie bei anderen renommierten Prozessorschmieden üblich – regelmäßig Fehlerlisten mit entdeckten Bugs zu veröffentlichen.
In diesem Zusammenhang werden auch immer wieder altbekannte Rundungsfehler in mathematischen Programmen hochgespielt und unter knackigen Überschriften vermarktet. Was steckt also hinter Schreckensmeldungen wie “Rechnet Excel falsch”?
Lösung:
Dahinter steckt vor allem die Grundproblematik, daß im Computer Zahlen nur mit hohem Aufwand auf beliebig viele Dezimalen genau berechnet werden können. Des weiteren ist es ein Problem, daß die Umwandlung einer Dezimalzahl in eine Ganzzahl nicht immer das absolut korrekte Ergebnis liefert. Die Zahl 2, als Ergebnis einer Rechnung als 2.0 ausgegeben und als ganze Zahl weiterverwendet, ist eben im Rechner nicht notwendigerweise als ganze Zahl gespeichert, sondern kann auch für 1.999999999999957 oder gerundet für 1.999999999999960 stehen. Wendet man jetzt irgendwelche Rundungsfunktionen an, kann es leicht passieren, daß falsche Ergebnisse entstehen. Das ist weder die Schuld von Excel noch von irgendwelchen anderen Tabellen- kalkulationsprogrammen, die mit genau den gleichen “Fehlern” behaftet sind. Als Anwender sollte man sich bereits bei der Formulierung des Rechenvorgangs im klaren darüber sein, welche Probleme durch die rechnerinterne Darstellung von Zahlen entstehen können und wie sie sich, wenn schon nicht vermeiden, so doch wenigstens umgehen lassen.
Nehmen wir einmal das Beispiel unserer Abbildung und lassen Excel die einfache Rechnung “(28,03-28,01)*100” anstellen. Stellen wir als Format der Zelle zwei Dezimalen, also “0,00” ein, ist die Antwort “2,0”. Nehmen wir als Format “0”, ist das Ergebnis “2”. Diese Antworten sehen vernünftig aus, aber wenn wir mit ihnen weiter rechnen, erhalten wir eventuell völlig falsche Ergebnisse. Zum Beispiel “ABRUNDEN(((28,03-28,01)*100);0)=1” oder “GANZZAHL((28,03-28,01)*100)=1”. Beide Ergebnisse sollten aber “2” sein!
Ändern wir einmal das Format der Ergebniszelle der Rechnung “(28,03-28,01)*100” von “0,00” oder “0” auf “0,000000000000000” und sehen nochmals auf das Ergebnis. Jetzt steht “1,999999999999960”, und so hat Excel die Zahl intern auch gespeichert. Jetzt wundert es niemanden mehr, wenn das Abrunden plötzlich “1” und die Berechnung der Ganzzahl, also was links vom Komma steht, auch “1” ergibt. Was man Excel wirklich anlasten kann, ist, daß das Programm beim Format “0,00” nicht “1,99” als Ergebnis angezeigt hat.
Jetzt versuchen wir unser Glück mit Mathematica. Um es vorwegzunehmen, auch Mathematica gibt als Ergebnis der Rechnung “(28.03-28.01)*100=1.999999999999957” und nicht “2” aus, sowie beim Abrunden dieses Ergebnisses natürlich “1”. Außerdem muß man mindestens fünfzehn Dezimalen numerische Genauigkeit einstellen, um endlich von dem falschen Ergebnis “2” wegzukommen.
Alle größeren Computerprogramme sind in irgendeiner Weise fehlerhaft. Warum sollten Rechenprogramme also immer richtig rechnen? Das betrifft nicht nur die Richtigkeit der verwendeten Algorithmen, sondern auch ihr Verhalten in Extrembereichen und ihre Implementierung. In Grenzbereichen, wie dem hier vorgeführten, kommt es überhaupt leicht zu Rundungsfehlern. Als Anwender sollte man mit den Funktionen Runden, Abrunden, Aufrunden und Ganzzahl in Excel sehr vorsichtig sein – vor allem bei Darstellungen mit zwei Dezimalen, wie das oft im Finanzbereich vorkommt – und sich gut überlegen, ob man nicht Berechnungen konstruiert, die die oben besprochene Problematik in sich tragen.
Es macht übrigens keinen Unterschied, ob die Tabellenkalkulation Excel, Lotus 1-2-3, Wingz, Quattro Pro oder Lotus Improv heißt, ob sie auf einem Macintosh, Power Macintosh, Next oder DOS- und Windows-PC läuft und welcher Prozessor unter der Blechhaube als Rechenknecht dient. Die Probleme bleiben immer die gleichen, Mißtrauen ist daher angebracht. Zu einem Rechenergebnis gehört Kontrolle – und ein Anwender, der es auf seine Sinnhaftigkeit überprüft.