Laden...

Embedded Firebird und Floats?

Erstellt von Quest vor 17 Jahren Letzter Beitrag vor 17 Jahren 1.639 Views
Q
Quest Themenstarter:in
108 Beiträge seit 2004
vor 17 Jahren
Embedded Firebird und Floats?

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...

S
8.746 Beiträge seit 2005
vor 17 Jahren

Bei Fliesskommazahlen musst du grundsätzlich und immer mit sowas rechnen.

3.170 Beiträge seit 2006
vor 17 Jahren

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

Q
Quest Themenstarter:in
108 Beiträge seit 2004
vor 17 Jahren

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...

Q
Quest Themenstarter:in
108 Beiträge seit 2004
vor 17 Jahren

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

M
104 Beiträge seit 2005
vor 17 Jahren

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