! Rundungsfehler.obas (c) Andre Koppel Software 2013
! Dieses kleine Programm zeigt überaus deutlich, dass
! ein PC nicht in der Lage ist, sämtliche Zahlen ohne
! Rundung so darzustellen, wie man es erwartet.
! In einer Schleife werden die Zahlen 1 bis eine
! Million erzeugt und jeweils 0,1 hinzuaddiert. Das
! Ergebnis sollte eindeutig sein (eine Nachkommastelle).
! Tatsächlich gibt es jedoch Zahlen, bei denen per se
! ein automatischer Rundungsfehler auftritt.
! Das Programm zeigt all die Zahlen, bei denen sich
! Rundungsfehler in einer neuen Stufe bemerkbar machen.
DISPLAY IS MESSAGE WINDOW
CLRSCR
STOPSW
SETSW 0
RUNSW
LastVal=0
FOR i=1 TO 1000000
V=i+0,1
A$=LIST BMAKE$(v)
FirstDigit$=LIST GET$(A$ ; 1)
IF IVAL(FirstDigit$)<>0 AND V-i<>LastVal THEN
DISP USING "12D':'10DR15Z': 'KL" : i ; v ; A$
END IF
LastVal=V-i
NEXT
Dauer=SWTIME
DISP "Dauer " Dauer "[sec]\n"
Das ist interessant
Die Architektur der Recheneinheiten einer PC-Architektur basieren auf der Norm IEEE-754. Auch wenn diese Norm viele Vorteile hat, so hat sie immanente Designschwächen, die sich in Form von rundungsfehlern äußern. Tatsächlich ist es so, dass ein PC einige (viele) Zahlen schlicht nicht darstellen kann. Sehr viele Gleitkommazahlen werden per se mit einem Rundungsfehler dargestellt, der sich dann im Rahmen selbst einfacher mathematischer Operationen stetig vergrößert.
Dieses OBAs-Programm zeigt in einer einfachen Programmschleife, an welchen Stellen Rundungsfehler bei selbst sehr kleinen und einfachen Zahlen auftreten.
Dieser Problematik muss man sich immer bewußt sein, wenn man mit PCs rechnet (Vergütungsberechnungen, Quotenzahlungen, Buchhaltug).
Beispiel in INVEP laden
Sie können dieses Beispielprogramm in den INVEP-OBAS-Interpreter laden, indem Sie im Interpreter über den Button "Neu/laden" die Option OBAS-Web auswählen. Geben Sie als Nummer für das Beispiel die 10 ein.


