Startseite
Geschichten
Taschenrechner
Können Taschenrechner rechnen?
von Boris Jakubaschk

Die Frage erscheint im ersten Moment vielleicht befremdlich, man kann aber schon ins Zweifeln geraten, wenn man seinen Taschenrechner mit der scheinbar simplen Aufgabe

50^(3/10*10/3)

konfrontiert und dieser anstelle der erwarteten Antwort "50" so etwas lustiges wie "49,999999998" anzeigt. Bei heutigen Taschenrechnern gelingt dieser Effekt zugegebenermaßen meist nicht mehr, bei der älteren Generation mit Leuchtanzeige dafür umso öfter.

Um zu verstehen, was da vor sich geht, muss man sich ein wenig mit der Art und Weise auseinandersetzen, wie ein Taschenrechner und letztenendes auch jeder Computer Zahlen abspeichert. Dabei ist zuerst einmal festzuhalten, dass Taschenrechner die Zahlen intern nicht im Dezimalsystem verarbeiten, sondern binär. Das gilt natürlich auch für Zahlen mit Nachkommastellen.

Weiterhin muss jeder Rechner aus technischen Gründen mit gerundeten Zahlen arbeiten - eine unendlich lange Zahl wie Pi würde sonst schließlich auch unendlich viel Platz im Rechenwerk benötigen - und unendlich lange zur Berechnung.

Taschenrechner arbeiten intern in einer Zahlendarstellung, die aus Mantisse und Exponent besteht. Eine solche Darstellung kennt man als "Wissenschaftliche Zahlendarstellung" in der Mathematik, wo man eine Zahl wie 1400000 auch schreiben kann als 1,4*106. Taschenrechner kennen diese Darstellung meist auch und zeigen sie als "1.4E06" an. Die Zahl vor dem E nennt man nun Mantisse, die Zahl dahinter den Exponenten. Genau so werden Zahlen im Taschenrechner intern gespeichert und verarbeitet - nur eben nicht im dezimalen, sondern im binären Zahlensystem.

Um dies zu verstehen muss man sich zunächst einmal vergegenwärtigen, wie unser normales Dezimalsystem funktioniert: Man schreibt Zahlen, indem man Ziffern aneinander reiht. Dabei verzehnfachen die Stellen vor dem Komma mit jedem Schritt nach links Ihren Wert. Die letzte Stelle sind die "Einer", die vorletzte die "Zehner", die vorvorletzte die "Hunderter" und so weiter.

Umgekehrt ist die Wertigkeit der Stellen nach dem Komma mit jedem Schritt nur noch ein Zehntel so groß. Also bei der ersten Stelle nach dem Komma ein "Zehntel", dann "Hundertstel", "Tausendstel" und so weiter.

14,25
kann man also auch schreiben als

1 * 10 +
 4 * 1 +
   2 * 0,1 +
    5 * 0,01


Das ist im Zehnersystem natürlich trivial.

Im binären Zahlensystem ist alles genauso, nur eben zur Basis 2. Die erste Stelle vor dem Komma hat folglich die Wertigkeit 1 und diese verdoppelt sich mit jedem Schritt, also 2, 4, 8,...

Genau umgekehrt geht's hinter dem Komma: Mit jedem Schritt halbiert sich die Wertigkeit, beträgt also erst 0,5, dann 0,25, 0,125,...

1110,01
kann man also auch schreiben als

1 * 8 +
 1 * 4 +
  1 * 2 +
   0 * 1 +
     0 * 0,5 +
      1 * 0,25


Was zusammengerechnet im Dezimalsystem exakt 14,25 ergibt.

Aus 14,25 dezimal wird also binär 1110,01. Da die Mantisse eine ganze Zahl sein muss, wird das Komma ans Ende geschoben und die Verschiebung über den Exponenten gekennzeichnet:

1110,01 = 111001 * 2-2

Dabei ergibt es sich, dass Zahlen, die im Dezimalsystem "glatt" sind, also wie z.B. 3,3 eine endliche Zahl von Nachkommastellen haben, im Binärsystem nicht endlich darstellbar sind, d.h. mit einer Periode enden. Die werden dann zwangsweise irgendwann abgeschnitten.

Auch das kann man sich recht leicht veranschaulichen:

Normalerweise macht ein Taschenrechner bei der Umwandlung einer Dezimalzahl in eine Binärzahl folgendes: Er verdoppelt die Zahl so lange im Dezimalsystem, bis sie keine Nachkommastellen mehr hat. Er merkt sich, wie oft er das gemacht hat und das ist dann der negative Exponent, den er abspeichert. Die Zahl selbst wird dann ins binäre Format gewandelt.

Bei 14,25 macht er also folgendes:

14,25 * 2 = 28,5
28,5 * 2 = 57

57 ist im Binärsystem 111001
der Exponent ist -2, weil man zwei mal verdoppeln musste.
Das ist das Ergebnis, das wir ja bereits kennen.

Wenn man dasselbe mit 3,3 versucht, erlebt man eine Überraschung:

3,3 * 2 = 6,6
6,6 * 2 = 13,2
13,2 * 2 = 26,4
26,4 * 2 = 52,8
52,8 * 2 = 105,6
105,6 * 2 = 211,2
211,2 * 2 = 422,4
422,4 * 2 = 844,8
844,8 * 2 = 1689,6
1689,6 * 2 = 3379,2
3379,2 * 2 = 6758,4
6758,4 * 2 = 13516,8
13516,8 * 2 = 27033,6
27033,6 * 2 = 54067,2


Die Zahl macht gar keine Anstalten, irgendwann mal keine Nachkommastelle mehr zu haben. Wenn unser Taschenrechner jetzt mit 16 Binärstellen arbeitet, passt da aber als größte Zahl gerade mal 2^16-1, also 65535 hinein, d.h. bei einer weiteren Verdoppelung könnte er die Zahl nicht mehr speichern. Deswegen bricht er jetzt ab und verwirft die Nachkommastelle. Gespeichert wird also

54067 * 2-14, weil wir 14 mal verdoppelt haben. Binär ist das

1101001100110011 * 2-14

Wenn man das nun ins Dezimalsystem zurückwandelt, ist durch das Abschneiden der Nachkommastelle folgendes aus unserer 3,3 geworden:

3,29998779296...

Mit 16 Bits haben wir also gerade mal eine Genauigkeit von 4 Nachkommastellen erreicht. Ein realer Taschenrechner hat daher ein wesentlich breiteres Rechenwerk.

Der Taschenrechner rechnet mit so vielen Binärstellen, dass die Genauigkeit typischerweise etwa eine Dezimalstelle größer ist als der Anzeigebereich des Rechners. Wenn aber durch mehrere Operationen hintereinander sich die Rundungsfehler aufschaukeln, können sich diese quasi bis auf die letzte Anzeigestelle "vorarbeiten", was dann zu solch seltsamen Ausgaben wie der 49,99999998 in unserem Beispiel vom Anfang führt.

Ein moderner Taschenrechner mildert das Problem, indem er so viele Binärstellen verwendet, dass die Genauigkeit z.B. etwa drei Dezimalstellen größer ist als der Anzeigebereich. Dann treten solche Effekte viel seltener zu Tage. Das ändert aber nichts daran, dass der Taschenrechner viele Aufgaben, die man im Kopf mühelos exakt lösen kann, prinzipbedingt nur ungenau hinbekommt.

(angeregt durch eine Mail von Ann-Christin Rolfes)