Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Warum gibt die Abfrage sum () ein Ergebnis mit mehr Dezimalstellen zurück?

Der float Der Datentyp stellt keine Zahlen mit Dezimalstellen dar. Es stellt binäre Zahlen dar, also repräsentieren die binären Ziffern in den Zahlen Zweierpotenzen wie 16, 8, 4, 2, 1, ½, ¼, ⅛ und so weiter.

Die als „272,7“, „0,55“ usw. angezeigten Zahlen sind keine genauen Darstellungen der gespeicherten Werte. Beispielsweise kann die als „272,7“ angezeigte Zahl tatsächlich 272,70001220703125 lauten.

Die Regeln, die zum Formatieren von Zahlen für die Ausgabe verwendet werden, können diese Unterschiede vor Ihnen verbergen, indem Sie weniger als alle Ziffern verwenden, die zum Anzeigen des genauen Werts erforderlich sind.

Wenn Sie diese Zahlen addieren, können die Unterschiede zwischen den tatsächlichen Zahlen und den nahegelegenen Dezimaldarstellungen wachsen oder schrumpfen, je nach zufälligen Variationen zwischen den Unterschieden. Die Summe, die Sie sehen, ist ein natürliches Ergebnis dieser Additionen.