Hier gibs Fließkomma zahlen. Die haben halt einen andenen aufbau, kannst du dir selber anlesen unter Wiki.
Diese ungenauigkeit ist aber eigentlich verschwindend gering, du siehst sie halt nur deutlich weil da so viele 9en kommen.
Im Speicher steht halt nicht zB 0.18 drin, sonden ein Bit-Sammlung, die diese zahl repräsentieren.
Dabei kann jedoch 0.18 nicht zusammengestellt werden sonden eben nur:
Code: Alles auswählen
a.d = 0.18
Debug a
Schon in der Schule wurde bewiesen das die 0. 9er Periode genau 1 ist.
Auch die 0.82 kann nicht so gespeichert werden, sonden dort ist es etwas mehr:
Code: Alles auswählen
b.d = 0.82
Debug b
Du brauchst dir also keine gedanken machen wenn du mit scheinbar ungenauen werten rechnest.
Denn selbst wenn du 10 Tausend mal nur mit 0.17999999999999999 addierst, und dein Verstand dir sagt das muss am ende auch weniger als 1800 rauskommen, ist das quatsch, im gegenteil, in diesem fall kommt sogar scheinbar mehr raus:
1800.0000000001492
Code: Alles auswählen
a.d = 0.18
Debug a
d.d = 0
For n = 1 To 10000
d + a
Next
Debug d
Hat man sehr hohe Zahlen, kann man auch nur weiter hohe Zahlen dazu addieren.
Hat mehr sehr kleine Zahlen, kann man auch nur weiter kleine Zahlen addieren:
Code: Alles auswählen
a.d = 10000000000000000
Debug a
d.d = a + 1
Debug d
UNd die kleine Zahl verschwindet :
Code: Alles auswählen
a.d = 0.0000000000000001
Debug a
d.d = a + 1
Debug d