Hallo zusammen,
ich benutze die firebird-DB in der embedded-version und speichere derzeit in einigen datenbanktabellen float-werte (single in C#)...
speichere ich nun z.B. "2.5" ab und öffne die datenbank mit einem der gängigen tools (ib-expert, ems db manager, etc.) so steht dann im data-view immer sowas wie "2.4999999545434"...
wie kann sowas kommen? von irgendwelchen DB-einstellungen?
oder behandelt firebird die floats irgendwie anders?
danke schonmal...
Bei Fliesskommazahlen musst du grundsätzlich und immer mit sowas rechnen.
Hallo,
versuch mal die 2.5 vor dem speichern explizit auf float zu casten, sonst steckst Du vermutlich 'nen Double in ein Float-Feld.
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca
Original von MarsStein
Hallo,
versuch mal die 2.5 vor dem speichern explizit auf float zu casten, sonst steckst Du vermutlich 'nen Double in ein Float-Feld.
mach ich schon, hab ein explizites "Convert.ToSingle" bevor ich die zahl in das dataset stecke...
Original von svenson
Bei Fliesskommazahlen musst du grundsätzlich und immer mit sowas rechnen.
muss ich? ich kann also nicht davon ausgehen dass ich 2.5 speichere und dann auch 2.5 rausbekomme? also dann jedesmal beim einlesen wieder casten? 8o 8o 8o
Original von Quest
ich kann also nicht davon ausgehen dass ich 2.5 speichere und dann auch 2.5 rausbekomme?
Hallo Quest;
bei der Float-Genauigkeit (7 Stellen im Wertebereich ±1.5 × 1045 bis ±3,4 × 1038 ) kannst Du sicherlich nicht davon ausgehen. Wenn Du nur eine wesentlich geringere Genauigkeit benötigst und sicher sein willst, dass 2.5 == 2.5, verwende einen anderen Typen.
Gruß
Morpheus