| Forum: VB.NET |
Thema:
Re: Rundungsfehler |
Von:
Klaas Wedemeyer (
18.12.2003 17:01) |
Hi,
das Problem sind die Floats, die die Nachkommastellen auch binär darstellen: ... + 2 + 1 + 1/2 + 1/4 + 1/8 + ...
0,1 = 1/2 * 1/ 5 läßt sich so aber nicht richtig darstellen. Versuch mal im Decimal System 1 durch 3 zu teilen und wieder mit 3 zu multiplizieren ( 1 / 3 ) * 3 = 0,33333 * 3 = 0,99999. Genau das Problem ergibt sich bei Float Variablen mit allen Decimalzahlen, die sich nicht als ein Bruch darstellen lassen, die nur 2 im Nenner haben:
0,75 = 3/(2*2) OK
0,8 = 8/(2*5) Rundungsfehler
Beim rechen mit Float regelmäßig hinter der letzten zuerwartenden Stelle kaufmännisch runden.
Währungen möglichst nicht als Float ( 17,35 € ) sondern als Integer ( 1735 Cent ) speichern
Viel Glück, Klaas
Antworten
Vorsicht bei der Eingabe: Die Zeichen ' oder -- sind nicht erlaubt!