Zadejte hledaný výraz...

Praca s cenami

node
verified
rating uzivatele
(5 hodnocení)
27. 8. 2012 10:49:32
Ahojte.
Aky je najlepsi a najuniverzalnejsi sposob pre pracu s cenami(v DB)? Casto nastavjau problemy pri zaokruhlovani a ked sa robi s danami. Na StackOverflow som nasiel par prispevkov, kedy ludia zvolili cestu prace s najmensiou cenovou jendotkou. Euro ma centy, takze najmensia jendotka je 0.01, niekde mozu mat az 4 miesta tak 0.0001 a inde zase iba 1. Pri prepoctoch sa potom len vynasobi dane cislo touto minimalnou jendotkou a dostaneme realne cislo, pritom v db napr. uchovavame integer.
Napr pri eurach su teda najmensou jednotkou centy. Takze ak mam napriklad sumu 123.45€, tak v databaze ju mam uchovanu ako 12345, pretoze 12345/100(cent = jedna stotina) = 123.45, pripadne ak mam sumu 10€ tak v databaze je uchovana ako 1000, pretoze 1000/100(cent = jedna stotina) = 10.
Ak mam nejaku aplikaciu, user si tak moze nastavit vsetko pre pozadovnau menu a teda mozem mat v DB integer ktoremu je jedno na kolko miest sa bude neskor prepocitavat. Namiesto doterajsieho decimal 10,2, ktory ma pevny format.
Ako to riesit vy, a pripadne mate skusenosti s tymto systemom? Ja momentalne pouzivam spominane decimal 10,2 v DB ale prave pre obmedzenie na dve desatine miesta mi to pri niektorych menach nevyhovuje.
27. 8. 2012 10:49:32
https://webtrh.cz/diskuse/praca-s-cenami/#reply801154
Jelenik
verified
rating uzivatele
(6 hodnocení)
27. 8. 2012 11:21:33
Typ float sa nedá použiť?
27. 8. 2012 11:21:33
https://webtrh.cz/diskuse/praca-s-cenami/#reply801153
Po dlouhém zvažování i čtení StackOverflow a pod. používám už jedině DECIMAL(19,4).
Vlezou se tam veškeré ceny s přesností na 4 desetinná místa i s potenciální obrovskou inflací.
Float se pro uchovávání cen nehodí, je nepřesný.
Ukládat to jako integer a pak přepočítávat je podle mě cesta k velmi nemilým bugům.
27. 8. 2012 13:42:30
https://webtrh.cz/diskuse/praca-s-cenami/#reply801152
Pro odpověď se přihlašte.
Přihlásit