|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Nouveau Membre du Club
![]() Inscription : avril 2006 Messages : 71 ![]() |
Bonjour, je sais que ce sujet a été mainte fois abordé et je connais la solution au problème : le type DECIMAL.
Mais ici je voudrais comprendre un comportement bizarre de Mysql : le même calcul sur deux tables IDENTIQUES à part le nom me renvoie deux résultats différents !? Je vous donne le contexte : Une table Code :
'ecriture' {INT date, INT metier, INT champ, FLOAT val} Par exemple : Code :
Pour être sûr de ne rien perdre de mes données, j'ai d'abord exporté ma table en SQL avec PhpMyAdmin puis je l'ai appelée ecriture2 dans le fichier .sql et l'ai importée dans la base. À ce stade, je n'ai fait AUCUNE modification de type, j'ai donc deux tables ecriture et ecriture2 IDENTIQUES en tous points (données, index, nom des colonnes, ...) Et quelle fut ma surprise lorsqu'en essayant mes SUM sur la colonne val de ecriture2, j'obtint le bon résultat ! N'en croyant pas mes yeux je réessaye sur ecriture ... le résultat est faux. Après une dizaine d'essais, je me rend à l'évidence. J'obtiens deux sommes différentes pour la même requete. Je suis passé au type DECIMAL et mon problème de départ est résolu mais j'aimerais comprendre ... |
||
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Eric DureuilDéveloppeur informatique Inscription : avril 2011 Messages : 843 ![]() |
Salut,
Je pense que ça vient dans la gestion de la précision et des erreurs d'arrondi qui dépend des types et de leur stockage interne... Plus on cumule les calculs, plus on obtient des erreurs plus ou moins flagrantes et l'ordre des opérations joue en plus... Par exemple, si tu fais une simple somme d'une liste de valeurs dont tu changes l'ordre, tu peux avoir différents résultats... |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com