Mailinglisten-Archive |
Fließkommazahlen sind hinterhältig, da sie fast immer mehr Nachkommastellen haben als wir Menschen zu sehen bekommen. Und MySQL bekommt eben *alle* Nachkommastellen, jedes Bit, zu sehen, während wir Menschen immer nur eine gerundete Version präsentiert bekommen. Und das ist - wie ich es kennengelernt habe - das ganze Problem. Meine Lösungsvorschlag: 1. Wie unten schon angedeutet, eine freiwillige Begrenzung auf eine bestimmte Anzahl Nachkommastellen bei Berechnungen und bei Vergleichen. Vielleicht institutionalisiert durch eine Rundungs-Methode, die alle Zahlen durch dieselbe Mühle dreht. 2. Alle Zahlen von dem Ablegen in Variablen auf die gleiche Genauigkeit runden. 3. Keine Literale (z.B. 2.3) verwenden. Auch sie (a) in eine Variable stecken und (b) durch die o.g. Rundungsroutine jagen. Auf diese Weise stimmt das, was wir Menschen sehen, wieder mit dem überein, was tatsächlich passiert und wir denken nicht mehr, dass es irgendwo hinter den Kulissen spukt. Grüße Martin Rösch -----Ursprüngliche Nachricht----- Von: Wolfgang Hauck [mailto:wbh at euta.net] Gesendet: Montag, 10. Februar 2003 17:41 An: 'mysql-de at lists.4t2.com' Betreff: Re: Fliesskommazahlen in WHERE-Klausel >Mein MySQL scheint da Probleme mit dem auffinden "kleiner" >Fließkommazahlen zu haben, der Fehler tritt nämlich auch bei >WHERE-Klauseln mit z. B. "betrag=2.3" auf, wovon es in der Tabelle >einige Datensätze gibt. >Hat wer eine Vorstellung, woran es liegen könnte? Oder wie ich dem >abhelfen könnte? Hi Till, Das Problem hatten wir glaub ich schon mal... Verwende mal TRUNCATE(X,D) oder round(X,D) um mögliche Rundungsfehler auszuschliessen... siehe auch: http://www.mysql.com/doc/en/Mathematical_functions.html MfG Wolfgang -- Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter -->> http://www.4t2.com/mysql -- Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter -->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive