problème avec les float phpadmin mySql

novicemac0

Membre confirmé
2 Avril 2008
35
1
Bonjour,

J'ai un problème avec la clause where et les floats. Avec phpadmin, j'arrive à insérer des entrées de type float, mais quand j'essaie de récupérer ces valeurs en utilisant la clause where sur un float, il ne trouve pas d'entrées.

ex :
deux entrées existent dans la base de données avec respectivement points pour valeur 1 et 1.43 (le point est le séparateur)

le select fonctionne si le float n'a pas de virgule (points est définie comme float)
SELECT stats_id FROM stats_indiv WHERE Points=1

par contre, l'entrée qui existe avec des chiffres derrière la virgule renvoie un resultset nul
SELECT stats_id FROM stats_indiv WHERE Points=1.43

Merci de votre aide
 
Bonjour,

Un problème récurent en informatique: la comparaison de flottants...

Voici un extrait de chez MySQL:
If you are comparing FLOAT or DOUBLE columns with numbers that have decimals, you can't use equality (=) comparisons. This problem is common in most computer languages because not all floating-point values can be stored with exact precision. In some cases, changing the FLOAT to a DOUBLE fixes this. See Section B.1.5.8, “Problems with Floating-Point Comparisons”.

le lien vers la solution (floating-point comparisons)
 
oui c'est pour la meme raison qu'on ne fait pas de switch case avec des real; voila en gros ce que tu essayes de faire 0.00011=0.000109, maintenant tu peux calculer des ranges ou faire comme tout le monde passer a l'unite superieure en utilisant une multiplication et bien sur en cast''ant (int) sur l'operation, je me demande pourquoi tu as des floats dans ta DB... c'est reserve a des traitements bien specifiques et generalement pas pour ce que tu es en train de faire.

de deux tu aurais du poster dans web