sql >> Database >  >> RDS >> Mysql

waarom retourneert sum() query resultaat met meer decimalen?

De float gegevenstype vertegenwoordigt geen getallen met decimale cijfers. Het vertegenwoordigt getallen met binaire getallen, dus de binaire cijfers in de getallen vertegenwoordigen machten van twee, zoals 16, 8, 4, 2, 1, ½, ¼, ⅛, enzovoort.

De getallen die worden weergegeven als "272.7", "0.55", enzovoort, zijn geen nauwkeurige weergaven van de opgeslagen waarden. Het getal dat wordt weergegeven als "272.7" kan bijvoorbeeld 272.70001220703125 zijn.

De regels die worden gebruikt om getallen op te maken voor uitvoer, kunnen deze verschillen voor u verbergen door minder dan alle cijfers te gebruiken die nodig zijn om de exacte waarde weer te geven.

Wanneer u deze getallen optelt, kunnen de verschillen tussen de werkelijke getallen en de nabijgelegen decimale representaties groter of kleiner worden, afhankelijk van toevallige variaties tussen de verschillen. De som die je ziet is een natuurlijk resultaat van deze toevoegingen.




  1. Lijst van alle nullable-kolommen in een SQL Server-database

  2. Meerdere UNION-query's werken niet

  3. ORA-12704:tekenset komt niet overeen

  4. Hoe @@MAX_CONNECTIONS werkt in SQL Server