MySQL et les valeurs monétaires

Pour stocker des valeurs monétaires dans une base de données, on a généralement le réflexe d’utiliser un champ de type FLOAT. Ce n’est cependant pas une bonne idée, en tout cas avec MySQL.

En effet, la documentation indique que MySQL arrondit les valeurs lors du stockage ce qui veux dire que la valeur récupérée n’est pas forcément exactement celle stockée ce qui est très gênant dans le cas de valeurs monétaires.

MySQL performs rounding when storing values, so if you insert 999.00009 into a FLOAT(7,4) column, the approximate result is 999.0001.

Il est préférable d’utiliser un champ de type DECIMAL comme préconisé dans la documentation de MySQL :

The DECIMAL and NUMERIC data types are used to store exact numeric data values. In MySQL, NUMERIC is implemented as DECIMAL. These types are used to store values for which it is important to preserve exact precision, for example with monetary data.

Ce contenu a été publié dans Développement Web. Vous pouvez le mettre en favoris avec ce permalien.

2 réponses à MySQL et les valeurs monétaires

Les commentaires sont fermés.