Mysql
 sql >> Baza danych >  >> RDS >> Mysql

dlaczego zapytanie sum() zwraca wynik z większą liczbą miejsc po przecinku?

float typ danych nie reprezentuje liczb z cyframi dziesiętnymi. Reprezentuje liczby w systemie binarnym, więc cyfry binarne w liczbach reprezentują potęgi dwójki, takie jak 16, 8, 4, 2, 1, ½, ¼, ⅛ i tak dalej.

Liczby pokazane jako „272,7”, „0,55” itd. nie są dokładnymi reprezentacjami przechowywanych wartości. Na przykład liczba pokazana jako „272.7” może w rzeczywistości wynosić 272.70001220703125.

Reguły używane do formatowania liczb na wyjściu mogą ukryć te różnice przed tobą, używając mniej niż wszystkich cyfr potrzebnych do pokazania dokładnej wartości.

Po dodaniu tych liczb różnice między rzeczywistymi liczbami a pobliskimi reprezentacjami dziesiętnymi mogą rosnąć lub zmniejszać się, w zależności od przypadkowych różnic między różnicami. Suma, którą widzisz, jest naturalnym wynikiem tych dodatków.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL:Uzyskaj wynik zwrotu z INSERT SELECT

  2. Import SOLR-delta nie działa, ale pełny import działa poprawnie

  3. LEWE DOŁĄCZ w ZF2 za pomocą TableGateway

  4. Jak wykonać pogrupowany ranking w MySQL

  5. mysql zapytanie:pokaż podsumowanie wszystkich dokonanych płatności i sumę faktur według daty