Je vais prendre la position opposée.
FLOATest 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.
DECIMALdoit ê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 DECIMALautorise 65 chiffres significatifs; FLOATdonne environ 7 et DOUBLEenviron 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 UNSIGNEDquand 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 FLOATqui 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 TINYINTcela prendrait 1 octet (1 Go au total), mais FLOAT4 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 INTou 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 .