Stockage de nombre à virgules dans MySQL

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|http://dev.mysql.com/doc/refman/5.0/fr/numeric-type-overview.html|fr]

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *