Maison > base de données > tutoriel mysql > le corps du texte

Pourquoi mes comparaisons à virgule flottante MySQL sont-elles inexactes ?

Mary-Kate Olsen
Libérer: 2024-11-08 13:45:02
original
924 Les gens l'ont consulté

Why are My MySQL Floating-Point Comparisons Inaccurate?

Problèmes de comparaison à virgule flottante MySQL

Vous rencontrez des problèmes avec les comparaisons à virgule flottante dans MySQL, car les nombres à virgule flottante sont intrinsèquement inexacts en raison à la façon dont ils sont représentés en binaire. Cela peut conduire à des résultats inattendus lors de la comparaison de valeurs qui devraient être égales.

Considérons l'exemple suivant :

SELECT COUNT(*) FROM `users` WHERE `points` > "12.75"
Copier après la connexion

Vous vous attendez à ce que cette requête renvoie 2, car il y a deux lignes avec des points supérieur à 12,75. Cependant, il renvoie 3 car les nombres à virgule flottante sont représentés avec un nombre limité de bits, ce qui entraîne des erreurs d'arrondi.

Les experts recommandent d'utiliser le type de données DECIMAL au lieu de FLOAT ou DOUBLE pour les calculs financiers et d'autres applications où la précision est cruciale. DECIMAL stocke les valeurs sous forme de nombres à virgule fixe, éliminant ainsi les erreurs d'arrondi qui peuvent survenir avec les nombres à virgule flottante.

Pour illustrer, convertissons la colonne de points de FLOAT en DECIMAL :

ALTER TABLE `users` MODIFY COLUMN `points` DECIMAL(6,2)
Copier après la connexion

Désormais, lorsque vous exécuterez à nouveau la requête, vous obtiendrez le résultat attendu de 2.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!