Kapitel I - Grundlagen
Additum: Noch mehr Rechnungen
Im ersten Kapitel haben wir bereits gesehen, dass Python rechnen kann. Problemlos sind Dezimalzahlen möglich. Hierbei muss man nur beachten, dass man statt dem Komma einen Punkt eingibt bzw. diesen als Dezimaltrennzeichen benutzt. Probiere es nochmal aus:
0.5+0.51.0
Python kann sogar mit Brüchen rechnen. Allerdings erhalten wir das Ergebnis als Dezimalzahl.
1/3+1/3+1/31.0
Ein weiteres Beispiel:
1+17/36.666666666666667
Prüfe das Ergebnis der zweiten Rechnung mit deinem Taschenrechner nach!
Auch Brüche und Dezimalzahlen zusammen sind kein Problem für Python:
1/2+0.81.3
Und das nicht nur bei der Addition, sondern auch bei der Multiplikation:
1/2*0.50.25
Noch ein letztes Beispiel:
1/2*0.8Aber moment mal - die Auswertung ergibt
0.40000000000000002
Probiere es aus! Scheinbar hat Python sich bei der 17. Stelle hinter dem Komma verrechnet. Hier steht nicht die Ziffer 2 sondern die Ziffer 0.
Probieren wir es nochmal, vielleicht verrechnet sich Python diesmal nicht:
1/2*0.80.40000000000000002
Python liefert uns wieder das gleiche Ergebnis. Es ist immer so, dass wir bei gleicher Eingabe vom Computer das gleiche Ergebnis erhalten werden. Unabhängig davon, ob wir den Computer rechnen, malen oder andere Tätigkeiten ausführen lassen. Das liegt daran, dass der Computer immer die gleichen Anweisungen ausführt und damit zwangsweise (es sei denn, er geht kaputt) zu dem gleichen Ergebnis kommen wird.
Betrachten wir noch ein paar Beispiele:
1/3+1/30.66666666666666663
Auch hier stimmt wieder etwas mit der 17. Stelle hinter dem Komma nicht. Gerundet müsste hier die Ziffer 7 stehen.
1/2+1/30.83333333333333326
Es lassen sich noch deutlich mehr Beispiele finden, bei denen sich Python scheinbar verrechnet.
Findest du noch weitere solcher Beispiele?
Bevor wir anfangen, uns über Python zu ärgern, lösen wir die Sache bzw. das "Problem" auf:
Die hier auftretenden Ungenauigkeiten sind nicht die Schuld von Python. Bei anderen Programmiersprache treten ähnliche Phänomene auf. Diese Ungenauigkeiten kommen durch den Prozessor zustande. Dieser rundet bei seinen Rechnungen immer wieder auf bzw. ab. Dies lässt sich leider nicht vermeiden und wir müssen dies akzeptieren.
Streng genommen bedeutet das für uns aber keine Umstellung oder Neuerung. Ein Taschenrechner, wie wir ihn im Mathematikunterricht nur zu gern verwenden, hat bei seinen Rechnungen ähnliche Ungenauigkeiten. Allerdings ist der Taschenrechner in dieser Hinsicht etwas geschickter und verheimlicht uns dies. Dadurch, dass er intern mit beispielsweise 20 Stellen rechnet, aber schlussendlich auf seinem Display nur 9 oder 10 Stellen anzeigt, kriegt der eifrige Taschenrechnernutzer die Ungenauigkeiten nicht mit bzw. sieht diese nicht.