Zadejte hledaný výraz...

MySQl chyba při použítí SUM

Vít Michalek
verified
rating uzivatele
(14 hodnocení)
16. 9. 2016 15:02:17
Mám jednoduchý dotaz na tabulku kde sčítám hodnota pomocí sum(sloupec).
Hodnoty které chci sečíst jsou 5 + 3 + 5 + 0.2 + 0.2 = 13.4
Ale Mysql mi vrátí 13.399999999999999
Sloupec je definovaný jako double UNSIGNED
Mysql verze : 5.6.30
PHP 7
Vůbec netuším, kde je problém.
Nemáte s tím někdo zkušenost?
16. 9. 2016 15:02:17
https://webtrh.cz/diskuse/mysql-chyba-pri-pouziti-sum#reply1224265
TomasX
verified
rating uzivatele
(4 hodnocení)
16. 9. 2016 15:11:32
ulož sloupec jako float a bude to sčítat v pořádku, tohle je problém uložení čísel v binární formě.
16. 9. 2016 15:11:32
https://webtrh.cz/diskuse/mysql-chyba-pri-pouziti-sum#reply1224264
Tom
verified
rating uzivatele
(7 hodnocení)
16. 9. 2016 15:15:26
K čemu používáš double? Předpokládám, že jde o částku. Pokud ano, je daleko vhodnější decimal.
Pokud použiješ double zaděláváš si na problémy, už je proto, že nikd nevíš jak mysql číslo uloží, z dokumentace:
The FLOAT and DOUBLE types represent approximate numeric data values
Můžeš mu zadat přesnost s jakou budeš počítat, např. double(8,2). Ale osobně bych raději použil decimal (záporné hodnoty si ukládej s jiným příznakem <- vycházím z toho, že jde o částky)
16. 9. 2016 15:15:26
https://webtrh.cz/diskuse/mysql-chyba-pri-pouziti-sum#reply1224263
TomasX
verified
rating uzivatele
(4 hodnocení)
16. 9. 2016 15:16:46
no vidíš, sorry, decimal je správný typ, double to uvedl správně...
16. 9. 2016 15:16:46
https://webtrh.cz/diskuse/mysql-chyba-pri-pouziti-sum#reply1224262
Martin
verified
rating uzivatele
(7 hodnocení)
16. 9. 2016 15:18:35
Je to kvoli reprezentacii datoveho typu (float, double). Ten je definovany ako sucet zlomkov, ktore maju v menovateli mocniny dvojky. Takze ako uz bolo spomenute, ide o aproximaciu.
16. 9. 2016 15:18:35
https://webtrh.cz/diskuse/mysql-chyba-pri-pouziti-sum#reply1224261
Pro odpověď se přihlašte.
Přihlásit