Hallo,
gerade habe ich den Studenten vorgeführt, wie Zählschleifen in BASIC realisiert werden und bin im Emulator auf folgendes Phänomen gestoßen:
10 FOR I=1 TO 10 STEP 0.1
20 PRINT I
30 NEXT I
Die Ausgabe stimmt bis 3.7 - 3.8 wird allerdings bereits als 3.7999999999 dargestellt und so geht es auch weiter bis 8.9999999999. Dann geht es bei normal weiter bis 9.7 - als nächstes kommt dann 9.8000000001 usw.
Das selbe passiert auch im Emulator. Gibt es irgendwo Informationen über diesen Rundungsfehler? (Er hängt natürlich damit zusammen, dass in BASIC nicht zwischen INTEGER- und REAL-Zahlen unterschieden wird. Aber Assembler kennt diese Unterscheidung auch nicht! Werden also im Assembler beim Interpretieren von BASIC alle Variablen intern als REAL-Zahlen behandelt?)
S.