MySQL: type de colonne préféré pour les prix (produits)?

Dans MySQL, quel est le type de colonne préféré pour stocker le prix d’un produit (ou les devises en général)? Google m’a appris DECIMAL de FLOAT est souvent utilisé, mais je me demande lequel est le meilleur.

Je stocke des prix allant de 0,01 à 25,00. Bien sûr, des valeurs plus élevées pourraient également être possibles. (Remarque: je ne demande pas de code copie-pâte, je vous donne juste plus d’informations qui pourraient vous aider à former une réponse plus complète).

Merci

Decimal est celui que j’utiliserais

La différence de base entre Décimal / Numérique et Flottant: Flottant est le type de données Nombre approximatif, ce qui signifie que toutes les valeurs de la plage de types de données ne peuvent pas être représentées exactement. Decimal / Numeric est un type de données de précision fixe, ce qui signifie que toutes les valeurs du type de données peuvent être représentées exactement avec précision et échelle.

La conversion de décimal ou numérique en flottant peut entraîner une perte de précision. Pour les types de données décimaux ou numériques, SQL Server considère chaque combinaison spécifique de précision et d’échelle comme un type de données différent. DECIMAL (4,2) et DECIMAL (6,4) sont des types de données différents. Cela signifie que 11.22 et 11.2222 sont des types différents, bien que ce ne soit pas le cas pour float. Pour FLOAT (6), 11.22 et 11.2222 sont les mêmes types de données.

Le type de champ “Decimal” est bon.

Si vous avez des prix élevés, vous pouvez utiliser product_price decimal(6,2) NOT NULL, c’est-à-dire que vous pouvez stocker des prix jusqu’à 6 chiffres avec un point décimal avant 2 chiffres.

La valeur maximale du champ product_price decimal(6,2) NOT NULL, stockera le prix jusqu’à 9999,99

Si tous les prix sont compris entre 0,01 et 25,00, alors product_price decimal(4,2) NOT NULL, sera bon, mais si vous avez des prix plus élevés, vous pouvez définir toutes les valeurs en decimal(4,2) .

Je n’utiliserais pas float car cela peut donner des erreurs d’arrondi, car c’est un type à virgule flottante.

Utilisez la décimale:

“Les types DECIMAL et NUMERIC sont utilisés pour stocker des valeurs pour lesquelles il est important de conserver une précision exacte, par exemple avec des données monétaires.”

voir: http://dev.mysql.com/doc/mysql/en/numeric-types.html

Je préfère l’INT (prix multiplié par 100) qui résout un problème de virgule flottante dans d’autres logiciels.