Mysql
 sql >> Base de données >  >> RDS >> Mysql

pourquoi la requête sum() renvoie-t-elle un résultat avec plus de points décimaux ?

Le float Le type de données ne représente pas des nombres avec des chiffres décimaux. Il représente des nombres en binaire, de sorte que les chiffres binaires dans les nombres représentent des puissances de deux telles que 16, 8, 4, 2, 1, ½, ¼, ⅛, etc.

Les nombres affichés comme « 272,7 », « 0,55 », etc. ne sont pas des représentations exactes des valeurs stockées. Par exemple, le nombre indiqué par "272,7" peut en réalité être 272,70001220703125.

Les règles utilisées pour formater les nombres pour la sortie peuvent vous masquer ces différences en utilisant moins que tous les chiffres nécessaires pour afficher la valeur exacte.

Lorsque vous additionnez ces nombres, les différences entre les nombres réels et les représentations décimales proches peuvent augmenter ou diminuer, en fonction des variations aléatoires entre les différences. La somme que vous voyez est le résultat naturel de ces ajouts.