b4sh Geschrieben 5. Januar 2012 Geschrieben 5. Januar 2012 Hallo zusammen, ich hoffe irgendwer kann mir weiterhelfen. in meinem Programm muss ich aus einer Datenbank einen Numerischen wert(Numeric(19,6) auslesen. Den Wert krieg ich ja über DataReader.GetDecimal. Nun muss ich das ganze in ein Objekt Eigenschaft spielen das den Typ Double hat. Das löse ich bisher mit Convert.ToDouble(). Nun ist mir aufgefallen das er mir immer wieder Rundungsfehler macht, obwohl in der Datenbank z.b. nur 18.31 steht und im Objekt ist dann z.B. 18.32. kann das ganze am Convert liegen? Gruß
Klotzkopp Geschrieben 5. Januar 2012 Geschrieben 5. Januar 2012 Fließkommatypen sind durch ihren Aufbau prinzipbedingt ungenau. Ein Wert wie 18.31 lässt sich als Fließkommawert nicht exakt darstellen, darum ist das Ergebnis der Umwandlung der double-Wert, der am nächsten an 18.31 liegt. In diesem Fall ist das 18.309999999999999. Wenn man in der weiteren Verarbeitung die hinteren Stellen einfach abschneidet, kann dabei dabei dann 18.30 herauskommen. Ein höherer Wert sollte eigentlich nicht auftreten. Diese Rundungsfehler sind bei Fließkommatypen unvermeidbar, das musst du berücksichtigen, bevor du den Wert weiter verarbeitest.
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden