phpbar.de logo

Mailinglisten-Archive

Fliesskommazahlen in WHERE-Klausel

Fliesskommazahlen in WHERE-Klausel

Michael Donning donning at informenta.de
Die Feb 11 09:09:43 CET 2003


Hallo Till,

> -----Original Message-----
> From: Till Schoenefeld [mailto:listreceiver at wtnet.de]
> ich habe ein Problem mit dem Wiederauffinden einiger Gleitkomma-Zahlen:
>
> 	mysql> select id, betrag from tabelle where betrag=0.6;
> 	Empty set (0.00 sec)
>

Vielleicht solltest Du dir auch über die Datentypen Gedanken machen. Der Typ
float/single ist ein Tabu für jeden Programmierer :) 4 Bytes für eine
Zahlenrepräsentation inkl. Exponent ist doch recht mager.

Ist die Anzahl an Nachkommastellen beliebig, so sollte man Double (8Bytes)
verwenden. Ist die maximale Anzahl an Nachkommastellen dagegen fest, dann
sollte man den Typ Decimal verwenden.

Ein praktikabeler Vergleich bei Double/Float Werten sieht z.B. so aus:
ABS(wert1-wert2)<0.0000001 (wobei die konstante Zahl, die gewünschte maximal
zulässige Abweichung kennzeichnet).

Der Grund für diese Ungenauigkeit (gilt prinzipiell auch für Konstanten,
wenn diese auf double/float gecastet werden) ist, daß die Zahlen intern als
Binäre Fliesskommazahl + Exponent + Vorzeichen gespeichert werden bei der
Umrechnung vom Binärsystem in das Dezimalsystem gibts dann die gemeinen
Fehler.

Gruss,
Michael Donning

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


php::bar PHP Wiki   -   Listenarchive