phpbar.de logo

Mailinglisten-Archive

Typ Float =?iso-8859-1?Q?l=E4ss?= =?iso-8859-1?Q?t?= kein Vergleich zu

Typ Float läss t kein Vergleich zu

Michael Bergbauer mysql-de_(at)_lists.bttr.org
Mon, 14 Oct 2002 13:23:59 +0200


On Mon Oct 14, 2002 at 09:4809AM +0200, Don Marco wrote:
> Hallo,
> 
> die Abfrage
> SELECT * FROM lebensmittel WHERE broteinheiten = '1.1';
> liefert keine Datensätze, obwohl mehrere vorhanden sind.
> broteinheiten sind definiert als float(16,1)
> 
> Liegt es am Gleicheitszeichen? Die Abfrage:
> SELECT * FROM lebensmittel WHERE broteinheiten > '1.0' AND broteinheiten
> <'1.2';
> funktioniert?

Ich wuerde mal darauf tippen. Das Problem ist, das 1.1 in binaerer 
Fliesskomma-Darstellung nicht exakt darstellbar ist, sondern nur als 
Bruch. Du muesstest also immer mit entsprechenden Grenzen vergleichen, 
um sinnvolle Ergebnisse zu bekommen.

Alternativ kannst du das Problem moeglicherweise mit dem Decimal 
Datentyp angehen, der wird exakt dargestellt, und moeglicherweise kannst 
du durch geeignete Multiplikation (z.B. mit 10) das Problem so 
verlagern, das du nur Int-Werte verwendest.


-- 
Michael Bergbauer <michael_(at)_noname.franken.de>
use your idle CPU cycles - See http://www.distributed.net for details.
Visit our mud Geas at geas.franken.de Port 3333

---
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 



php::bar PHP Wiki   -   Listenarchive