Rechenfehler?

27/11/2009 - 16:16 von Thomas Heller | Report spam
Hallo, bei der Summierung verschiedener Zahlenwerte aus einer
Datenbank habe ich folgendes Problem:

Dim x As Double = CDbl(399.07) - CDbl(5.85)
MsgBox(x - Math.Round(x, 2))

leifert -5,6843418860808E-14.

Oder noch besser:

Dim x As Double = CDbl(6.07) - CDbl(5.85)
MsgBox(x)

liefert 0,220000000000001

Ist der Code vieleicht so nicht richtig? Habe ich einen Denkfehler?
Ist mein Rechner schrott? Danke für Hilfe!!!
 

Lesen sie die antworten

#1 Armin Zingler
27/11/2009 - 16:41 | Warnen spam
Thomas Heller schrieb:
Hallo, bei der Summierung verschiedener Zahlenwerte aus einer
Datenbank habe ich folgendes Problem:

Dim x As Double = CDbl(399.07) - CDbl(5.85)
MsgBox(x - Math.Round(x, 2))

leifert -5,6843418860808E-14.

Oder noch besser:

Dim x As Double = CDbl(6.07) - CDbl(5.85)
MsgBox(x)

liefert 0,220000000000001

Ist der Code vieleicht so nicht richtig? Habe ich einen Denkfehler?
Ist mein Rechner schrott? Danke für Hilfe!!!



Meinst du das ernst? :-) Nein, ist er nicht. Das liegt in der Natur
der Fließkommatypen und -operationen. Sie sind nicht auf xy Dezimalstellen
genau. Verwende den Typ Decimal wenn du dezimal korrekt rechnen willst.

Siehe u.a. auch hier:
http://groups.google.de/group/micro...f9c991a52f

Armin

Ähnliche fragen