J'ai rencontré un problème en introduisant des colonnes à virgule flottante dans le schéma de base de données MySQL que les comparaisons sur les valeurs à virgule flottante ne retournent pas toujours les bons résultats.Problèmes de comparaison à virgule flottante MySQL
1 à 50,12
2 à 34,57
3 à 12,75
4 - ... (tout repos inférieur à 12,00)
SELECT COUNT(*) FROM `users` WHERE `points` > "12.75"
Cela me retourne "3". J'ai lu que les comparaisons de valeurs à virgule flottante dans MySQL est une mauvaise idée et le type décimal est la meilleure option.
Ai-je l'espoir d'aller de l'avant avec le type à flotteur et de faire en sorte que les comparaisons fonctionnent correctement?
Quels types de littéraux sont placés entre guillemets doubles dans SQL? – Joey
Malheureusement, MySQL permet aux guillemets d'agir comme des guillemets simples par défaut. Cette fonctionnalité peut être désactivée avec l'option 'ANSI_QUOTES', ce qui les fera se référer aux identifiants selon le standard ANSI SQL (comme les backticks non standard dans la requête ci-dessus). – bobince
12.75 est exactement représentable en binaire (1100.11), donc je ne vois pas comment il passe le test "> 12.75". Êtes-vous sûr qu'il n'y a pas d'autre point> 12.75 dans votre liste? –