Quel type (Float ou décimal) est le mieux utilisé pour stocker les prix dans une base de données mysql?Float ou décimal pour les prix?
Répondre
Les flottants ne sont pas exacts et peuvent entraîner des erreurs d'arrondi cumulatives. Decimal est le meilleur format pour l'information financière qui doit être exacte.
La décimale n'est pas exacte non plus - mais elle n'est pas exacte dans un comme nous nous attendons. –
Si la signification du commentaire de Michael n'est pas claire, veuillez voir sa réponse ci-dessous. – MaxVT
Pour les calculs financiers utilisent décimal
Selon IEEE 754 Floats sont toujours binaires, seuls les nouveaux formats standard de décimales défini IEEE 754R. La plupart des parties binaires fractionnaires ne peuvent jamais égaler la représentation décimale exacte. Tout nombre binaire peut être écrit comme m/2^n (m, n entiers positifs), n'importe quel nombre décimal comme m/(2^n * 5^n). Comme les binaires n'ont pas le facteur premier 5, tous les nombres binaires peuvent être exactement représentés par des décimales, mais pas vice versa.
0.3 = 3/(2^1 * 5^1) = 0.3
0.3 = [0.25/0.5] [0.25/0.375] [0.25/3.125] [0.2825/3.125]
1/4 1/8 1/16 1/32
Ainsi, pour les calculs financiers utilisent décimal ne flotteront pas
Utilisez S'il vous plaît BigDecimal, car il est le meilleur pour les prix, étant donné que quelques centimes sont arrondis correctement dollar.
Joshua Bloch recommande BigDecimal.
Voyez-vous un tag "java" quelque part? –
@Michael tu m'as eu !! . J'utilise pour regarder pour le filtrage des questions plus récentes par Java, donc j'ai eu cette question. –
Lorsque nous stockons un nombre dans float, nous n'enregistrons pas le nombre exact, c'est une approximation. La partie entière obtient la priorité et la partie fractionnaire est aussi proche que la taille du type. Donc, si vous avez des calculs et besoin d'un résultat précis, utilisez Decimal.
Les prix sont des valeurs décimales, et les calculs sur les sont censés se comporter comme des fractions décimales en ce qui concerne l'arrondissement, littéraux, etc.
C'est exactement ce que font les types de décimales. Les flottants sont stockés en tant que fractions binaires, et ils ne se comportent pas comme des fractions décimales - leur comportement n'est souvent pas celui attendu par les maths décimaux. Lire The Floating-Point Guide pour des explications détaillées. Pour des valeurs monétaires, n'utilisez jamais de type float binaire - surtout si vous avez un type décimal parfaitement bon disponible!
- 1. Regex pour le prix
- 2. Convertir float en décimal dans Informix
- 3. Type de données chaîne, décimal ou flottant pour le champ de prix?
- 4. RegEx pour les prix?
- 5. montre décimal ou double avec des zéros
- 6. regex int ou float
- 7. Expression régulière pour décimal ou blanc
- 8. Plafond (convertir (décimal, décimalvalue)) vs Plafond (convertir (float, decimalvalue))
- 9. MySQL: type de colonne préféré pour les prix (du produit)?
- 10. Utilisation de SUM sur les données FLOAT
- 11. Format décimal pour les valeurs en pourcentage?
- 12. Expression régulière PHP pour correspondre au prix ou au montant
- 13. Stratégies d'arrondi décimal dans les applications d'entreprise
- 14. Prix de format
- 15. Float et Double pour les valeurs monétaires
- 16. Convert.ToSingle() pour les données float Type
- 17. TextItem avec filtre de prix
- 18. python comparaison décimal
- 19. Télécharger les prix avec python
- 20. Stylecop - Détermine si Double ou Float
- 21. Conversion double pour décimal
- 22. C# sérialisent décimal xml
- 23. Différents prix pour différents pays
- 24. API pour les meilleurs prix de l'essence, comme GasBuddy?
- 25. float + float = NAN
- 26. Fetch Seulement les prix les plus bas?
- 27. gamme prix
- 28. Additionner les prix des articles pour obtenir le total
- 29. Script de comparaison des prix pour les produits
- 30. Codeigniter Cart Classe - prix supplémentaire pour les options produit
Quelle base de données? Certains comme Oracle n'ont que des décimales. – Mark
Voir [Utiliser flottant ou décimal pour le montant en dollars de l'application comptable?] (Http://stackoverflow.com/questions/61872/use-float-or-decimal-for-accounting-application-dollar-amount "StackOverflow"). – Andrew
C'est pour une base de données mysql mais s'il y a des différences entre les autres, j'aime bien l'entendre. – tom