Veröffentlicht 5. Januar 201213 j 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ß
5. Januar 201213 j 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.
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.