Update - Gleitkommazahlen

thomy800

Erfahrenes Mitglied
Hi.

Ich habe dass Problem, dass ich Gleitkommazahlen nicht richtig updaten kann. Durch einige Tests habe ich mitbekommen, wann der Fehler auftritt, hier ist so ein Bsp.:
SQL:
Update inventar SET anzahl=anzahl+2.3912346189512E-30 WHERE `userid`=3 AND `goid`=5  LIMIT 1;
Wie vllt. auffällt, steht da eine Gleitkommazahl die von PHP mit "E-30" dargestellt wird. Es gibt keinen SQL-Fehler, es wird einfach nix eingetragen!

Kann mir jemand erklären wie dies zu stande kommt und wie ich das beheben kann?

MfG Thomy
 
Also ich habe jetzt eine provisorische Lösung gefunden. Und zwar war das Problem, dass (nach eigenem Nachzählen) Mysql (bei FLOAT) genau 14 Nachkommastellen verwendet. Bei meinem Bsp von oben wird ja durch E-30 die Kommastelle um 30 stellen nach hinten verschoben. Daher wären die 14 Stellen überschritten und weil in den 14 Stellen nur 0en stehen, wird das UPDATE als erfolglos (oder eher sinnlos, da sich ja nix ändert) abgestempelt.
Meine Lösung ist einfach:
PHP:
$result=round($value,14);
if($result!=0) mysql_query(...);
Warum aber bei einem INSERT alle Stellen anerkannt werden, ist mir ein Rätsel^^
 
Zuletzt bearbeitet:
Zurück