AKCE! Doména CZ zdarma ke každému ONEbit hostingu
Zobrazují se odpovědi 1 až 5 z 5

MySQl chyba při použítí SUM

  1. 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?

  2. Co se právě děje na Webtrhu?
  3. ulož sloupec jako float a bude to sčítat v pořádku, tohle je problém uložení čísel v binární formě.

  4. 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)

  5. no vidíš, sorry, decimal je správný typ, double to uvedl správně...

  6. 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.

Hostujeme u Server powered by TELE3