UPDATE réagit bizarrement

UPDATE réagit bizarrement - SQL/NoSQL - Programmation

Marsh Posté le 15-05-2006 à 17:32:30    

Bonsoir/jour,
 
j'ai un léger soucis avec une requête sql :
 
voici ma requête : "UPDATE membres SET points=points+0.5 WHERE pseudo='$pseudo'"
donc normalement, j'ai que 2 types de nombres : x ou x.5
 
mais le fait est qu'en répettant cette requête un bon nombre de fois, j'obtient des décimales bizarres du style x.4998 ou x.5001
 
 :cry:  
 
Si quelqu'un peut m'éclaircir ça serait fort aimable ;)

Reply

Marsh Posté le 15-05-2006 à 17:32:30   

Reply

Marsh Posté le 15-05-2006 à 17:40:42    

quel sgbd et comment est déclaré points dans membres ?

Reply

Marsh Posté le 15-05-2006 à 18:01:37    

sous mysql et points est un float (11)

Reply

Marsh Posté le 16-05-2006 à 07:04:34    

pas d'idée ??? :(

Reply

Marsh Posté le 16-05-2006 à 08:30:46    

change de type
 
http://dev.mysql.com/doc/refman/5. [...] float.html


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 16-05-2006 à 08:37:58    

bien vu ;) mais il donne pas de résolution ... soit comment avoir un nombre à valeur arrondit directement ...  
 
Mais je pense que le problème vient de là et je te remerice de ta réponse :)

Reply

Marsh Posté le 16-05-2006 à 08:40:25    

tu peux utiliser un DECIMAL() ;)


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 16-05-2006 à 10:50:31    

nayluge2 a écrit :

Bonsoir/jour,
 
j'ai un léger soucis avec une requête sql :
 
voici ma requête : "UPDATE membres SET points=points+0.5 WHERE pseudo='$pseudo'"
donc normalement, j'ai que 2 types de nombres : x ou x.5
 
mais le fait est qu'en répettant cette requête un bon nombre de fois, j'obtient des décimales bizarres du style x.4998 ou x.5001
 
 :cry:  
 
Si quelqu'un peut m'éclaircir ça serait fort aimable ;)


 
le float n'est pas la valeur precise d'un nombre. Il stocke celle qui s'en rapproche le plus  


---------------
MZP est de retour
Reply

Marsh Posté le 18-05-2006 à 17:36:59    

utiliser "number" ou "decimal" (synonymes).
déclaration : number(x,y) avec X = nombre de chiffres totaux, et Y = nombre de décimales
 
number(10,2) signifie que le plus grand nombre stockable sera :
99999999.99 /  -99999999.99
Avec au plus deux décimales
 
number(38) : 99999999999999999999999999999999999999 / -99999999999999999999999999999999999999
 
number(38,38) : .99999999999999999999999999999999999999 / -.99999999999999999999999999999999999999
 
ce type est plus lent pour faire des calculs dessus, mais il a l'avantage de conserver la précision exactement.


Message édité par Arjuna le 18-05-2006 à 17:37:42
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed