b4sh Geschrieben 5. Januar 2012 Teilen 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ß Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 5. Januar 2012 Teilen 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.