Mailinglisten-Archive |
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