phpbar.de logo

Mailinglisten-Archive

AW: Fliesskommazahlen in WHERE-Klausel

AW: Fliesskommazahlen in WHERE-Klausel

Martin Rösch martin.roesch at generalobjects.com
Mon Feb 10 18:35:51 CET 2003


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