Datentyp float() => Rundungsfehler

Mik3e

Erfahrenes Mitglied
Hi,

Mein DBMS: MySQL 5.0.13
Mein (Rundungs-)Problem:
Ich habe eine Attribut "value" vom Typ "float(13,8)".

Speichere ich nun den Wert
"1.8"
in dieses Feld, so scheint mir, dass MySQL (aus welchen Gründen auch immer) zu runden beginnt...
Im Feld gespeichert wird nämlich folgender Wert:
1.79999995

Korrekt wäre aber natürlich:
1.80000000

Kann es sein, dass er Probleme mit den acht Nachkommastellen hat Ich kann die aber nicht reduzieren, da es bei diesem Wert um Wechselkurse geht....

Hat jemand eine Idee, was hier genau vor sich geht?

Ciao,
Mike
 
Hi,

Habe jetzt auf DECIMAL umgestellt.. Das Problem war, dass die Werte bei DECIMAL bisher als String gespeichert wurden (nicht wirklich hübsch). Habe aber gerade gelesen, dass seit Version 5.0.3 die Werte tasächlich als Dezimalwert gespeichert werden.

Das es floating-rundungsfehler gibt ist mir klar. Bisher sind mir diese aber nur bei Berechnungen untergekommen. Mich verwundert es etwas, dass der Server bei:

"INSERT INTO X VALUE 1.8"

den Wert auf 1.7999995 "rundet".... (obwohl er angeblich auf 30 nachkommastellen genau rechnet).

1.6 macht er zu 1.60000002
1.5 beibt 1.50000000

Es leben die Überraschungen des Alltags ;)
Ciao,
Mike
 
Zurück