Stockage de nombre à virgules dans MySQL
Par Olivier. samedi 21 février 2009, 16:59. PHP / SQL float MySQL | Lien permanent.
Pour stocker un nombre à virgule (un flottant, ou float en anglais) dans MySQL, il existe plusieurs types de colonnes. Mais attention : ils ne sont pas tous identiques. Petite démonstration simple :
- Prenons une table 'test', avec entre autre un champ de type FLOAT(8,2).
- Executez la requete suivante :
INSERT INTO `test` (id, flottant) VALUES(4,'446351.74');
- Puis relisez la ligne :
SELECT * FROM `test` WHERE id=4
Voici le résultat:
446351.75
Comment ?? ,75 et non ,74 comme je l'ai demandé ? Et oui, normal vu la méthode de stockage qu'utilise MySQL.
Voici ce que dit la doc :
Les types NUMERIC et DECIMAL ... sont utilisées par des valeurs dont il est primordial de conserver la précision exacte, comme pour des données financières.
La précision d'un FLOAT n'est donc pas parfaite. Faites attention à ça si vous stockez des valeurs financières dans une base de données.
je vous encourage donc à aller lire attentivement la documentation lors de la création de vos tables
http://dev.mysql.com/doc/refman/5.0/fr/numeric-type-overview.html