Je vais prendre la position opposée.
FLOAT
est pour les nombres approximatifs, tels que les pourcentages, les moyennes, etc. Vous devez faire le formatage lorsque vous affichez les valeurs, soit dans le code de l'application, soit en utilisant la FORMAT()
fonction de MySQL.
Ne testez jamais float_value = 1.3
; il y a plusieurs raisons pour lesquelles cela échouera.
DECIMAL
doit être utilisé pour les valeurs monétaires. DECIMAL
évite un deuxième arrondi lorsqu'une valeur doit être arrondie en dollars / cents / euros / etc. Les comptables n'aiment pas les fractions de cents.
L'implémentation de MySQL DECIMAL
autorise 65 chiffres significatifs; FLOAT
donne environ 7 et DOUBLE
environ 16. 7 est généralement plus que suffisant pour les capteurs et les calculs scientifiques.
Quant au "pourcentage" - Parfois, je l'ai utilisé TINYINT UNSIGNED
quand je veux consommer seulement 1 octet de stockage et que je n'ai pas besoin de beaucoup de précision; parfois j'ai utilisé FLOAT
(4 octets). Aucun type de données n'est réglé spécifiquement pour le pourcentage. (Notez également que DECIMAL(2,0)
cela ne peut pas contenir la valeur 100
, donc techniquement, vous en auriez besoin DECIMAL(3,0)
.)
Ou parfois, j'ai utilisé un FLOAT
qui détenait une valeur entre 0 et 1. Mais alors je devrais m'assurer de multiplier par 100 avant d'afficher le "pourcentage".
Plus
Les trois odeurs "pourcentage, moyenne, taux" comme des flotteurs, ce serait donc mon premier choix.
Un critère pour décider du type de données ... Combien de copies de la valeur existeront?
Si vous avez une table de milliards de lignes avec une colonne pour un pourcentage, considérez que TINYINT
cela prendrait 1 octet (1 Go au total), mais FLOAT
4 octets (4 Go au total). OTOH, la plupart des applications n'ont pas autant de lignes, donc cela peut ne pas être pertinent.
En règle générale, les valeurs "exactes" doivent utiliser une forme de INT
ou DECIMAL
. Des choses inexactes (calculs scientifiques, racines carrées, division, etc.) devraient utiliser FLOAT
(ou DOUBLE
).
En outre, la mise en forme de la sortie doit généralement être laissée à l'interface de l'application. C'est-à-dire que même si une "moyenne" peut être calculée comme "14.6666666 ...", l'affichage devrait montrer quelque chose comme "14.7"; c'est plus convivial pour les humains. Pendant ce temps, vous avez la valeur sous-jacente pour décider plus tard que "15" ou "14,667" est le formatage de sortie préférable.
La plage "0,00 - 100,00" peut être effectuée soit avec FLOAT
et utiliser le formatage de sortie, soit avec DECIMAL(5,2)
(3 octets) avec la prédétermination que vous voudrez toujours la précision indiquée .