Beitrag
von Volker_D » Mo 5. Jun 2023, 21:43
Ohh... eigentlich haben wir all diese Fälle in diesem Thread besprochen und geklärt.
Ich versuche es noch einmal im Kurzformat, ansonsten bitte noch einmal diesen Thread von vorne komplett lesen und dann noch mal fragen.
Vereinfacht gesagt sind es mehrere Probleme, die zu solchen Effekten führen können:
1. Dezimalzahlen mit Komma sind oft (aber nicht immer) im Dualsystem periodisch/unendlich lang.
Die Zahl kann sich also nicht ganz gemerkt werden. Und wird verkürzt/gerundet.
Damit hat man als erstes das Problem, dass ich eine Zahl von Dezimal in Dual speicher muss und dann wieder die Dualzahl auslesen muss und sie Dezimal darstelle.
Da nicht alle Ziffern vorhanden sind, ist die Zahl nicht mehr die gleiche. Sie ist etwas größer bzw. kleiner.
Wenn man rundet, dann sieht man den Unterschied nicht. Und man müsste, bezogen auf die Vergleiche, eigentlich immer auf maximal 15 Stellen runden, da die Ziffern danach falsch sein können.
2.
Bei den Rechnungen, die "eigentlich" das gleiche Ergebnis liefern, kann man es aber schaffen, dass die Zahl etwas früher gerundet wird, weil für die Rechnung nur eine begrenzte Anzahl an Stellen zur Verfügung steht.
Daher ist das eine Ergebnis hier wieder nicht die gleiche Zahl, aber diesmal eine etwas andere.
Daher sind die Vergleiche immer falsch, wenn man mehr als 15 Stellen benutzt. Und die Tabellenkalkulationprogramme nutzen standartmäßig mehr Stellen zum Vergleichen, obwohl man schon vorher weiß, dass das falsch ist.
Stell dir vor du hast 5 Stellen Platz und die Zahl:
0.3333
Jetzt Addiere ich 20:
20.333
(Ich könnte mir eine 3 weniger merken, weil ich nur 5 Stellen Platz habe!)
Jetzt ziehe ich wieder 20 ab:
0.3330
(Die 3 hinten kenne ich nicht mehr. Sie ist verloren gegangen!)
Also die Aufgabe 0.3333 + 20 - 20 ergibt für den Computer 0.333 (Also eine 3 weniger!) Und 0.3333 ist nicht das gleiche wie 0.333. Obwohl da jeder im Kopf ausrechnen kann, dass es doch 0.3333 sein müsste.
Bei den Aufgaben ohen ist es analog:
Wieder 5 Stellen Platz. Die "Plus Rechnung ist da nur "versteckt" (1,01 = 1+ 0,01 ):
20+1/3
=20.333
Jetzt -20
=0.3330
1/3 ist
0.33333
Ich vergleich (20+1/3)-20 mit 1/3 und sehe
0.3330 ist etwas anderes als 0.3333
Zuletzt geändert von
Volker_D am Mo 5. Jun 2023, 22:43, insgesamt 9-mal geändert.