Mysql
 sql >> Database >  >> RDS >> Mysql

perché la query sum() restituisce il risultato con più punti decimali?

Il float il tipo di dati non rappresenta i numeri con cifre decimali. Rappresenta i numeri con binario, quindi le cifre binarie nei numeri rappresentano le potenze di due come 16, 8, 4, 2, 1, ½, ¼, ⅛ e così via.

I numeri mostrati come "272,7", "0,55" e così via non sono rappresentazioni accurate dei valori memorizzati. Ad esempio, il numero visualizzato come "272,7" potrebbe essere effettivamente 272,700012220703125.

Le regole utilizzate per formattare i numeri per l'output possono nascondere queste differenze utilizzando meno di tutte le cifre necessarie per mostrare il valore esatto.

Quando si aggiungono questi numeri, le differenze tra i numeri effettivi e le rappresentazioni decimali vicine possono aumentare o diminuire, a seconda delle variazioni casuali tra le differenze. La somma che vedi è un risultato naturale di queste aggiunte.