2016-05-11 7 views
2

Ich habe einzelnen Datensatz auf einer Tabelle. Also auf MySQL, wennMySQL SUM, die unnötige Dezimalstellen zurückgibt

select myamount from table 1 -- returns amount 420.67 

Aber wenn ich das tue MySQL als

select sum(myamount) from table 1 -- returns amount 420.8699951171875 

sollte es nicht denselben Betrag 420,67 zurückkehren, da ich nur einen Datensatz haben? und wie man Betrag 420.67 erhält, wenn SUM benutzt wird.

Jede Hilfe wird geschätzt und ja myamount Datentyp ist Float.

+2

Mögliches Duplikat von [Verwendung von SUM auf FLOAT-Daten] (http://stackoverflow.com/questions/3907021/using-sum-on-float-data) –

Antwort

1

Float-Variablen werden in "wissenschaftlicher Notation" (das Format 2,4E + 04, das ist das gleiche wie 2,4 * 10^4) gespeichert. Aber um es noch schlimmer zu machen, wird es auch in Binärform gespeichert. Wenn Sie Dinge mit Zahlen berechnen, die als Gleitkommazahl gespeichert sind, kann dies zu merkwürdigen Ergebnissen führen.

This video by Computerphile beschreibt das Problem sehr schön.