Prog.Hu

Nettóból bruttó visszanyerése
50

2013-09-08T21:47+01:00
mezofi
mezofiProg.Hu
regisztrált tag
Üdv!
Felhívták a figyelmemet egy kis hibára. A programom elment egy bruttó végösszeget 3.400.000-et. Minden összeget nettósítva tárolok. Ebben az esetben elraktározza a 3.400.000-nek a nettó összegét, és ezt írja be a float típusú mezőbe: 2.83333e+006

Ennek az értéke, ha jól gondolom: 2.833.333,3333
Ha ezt szorzom 1.2-vel akkor vissza kapom a 3.400.000-et.

Itt a gondom. A PhpMyAdminban kiadok egy utasítást.

SELECT ar*1.2 as bruttó FROM `ebolt_rend_tetelek` WHERE id=44
És nem kapom vissza a bruttó összeget, hanem 3.399.996-ot kapok.

Van rá valami módszer, hogy a helyes összeget kapjam vissza?
Kisebb számoknál nincs ez a gond, de a millió felettieknél gond ven.
Köszi
Mutasd a teljes hozzászólást!
Nettóból bruttó visszanyerése
2013-09-08T21:47+01:00
mezofi
mezofiProg.Hu
regisztrált tag
Valószínű, már az 1.2 szorzás előtt nem 2.833.333,3333 van az adatbázisban, hanem le van kerekítve 2833333-ra. Nem egész típusként van tárolva és a törtrészt levágja?

A SELECT ar as bruttó FROM `ebolt_rend_tetelek` WHERE id=44 mit ad vissza? 2.833.333,3333-t?
Mutasd a teljes hozzászólást!
Oszd meg másokkal is!

sztem próbáld kerekíteni
vagy sql-ben vagy a pphp ban (round vagy ceil talán)
Mutasd a teljes hozzászólást!
Valószínű, már az 1.2 szorzás előtt nem 2.833.333,3333 van az adatbázisban, hanem le van kerekítve 2833333-ra. Nem egész típusként van tárolva és a törtrészt levágja?

A SELECT ar as bruttó FROM `ebolt_rend_tetelek` WHERE id=44 mit ad vissza? 2.833.333,3333-t?
Mutasd a teljes hozzászólást!
PHP-ben biztos, hogy így jó.

$brutto=ceil($brutto);

Mutasd a teljes hozzászólást!
Ne float-ot használj
Olvasd el (főleg az elejét), aztán eszerint válassz típust
Mutasd a teljes hozzászólást!
Felvetődött bennem, hogy az ÁFA biztosan mindíg 20%-os?
(Tudom, hogy nem erre irányult a kérdés, bocsi.)
Mutasd a teljes hozzászólást!
Természetesen csak a példa kedvéért írtam a 20%-ot, nem írhattam, hogy valamennyivel szorzom.

Minden terméknek meg kell adni, hogy melyik áfa körbe tartozik. És az áfa kör is végtelenre bővíthető.

A jó megoldás a típus módosítás lett.

Micunak adnám a pontot, de whito már előbb leírta, hogy mi a gond, ezért neki lesz adva.
Mutasd a teljes hozzászólást!
Ugyan teljesen másfele tapogatózott:
Nem egész típusként van tárolva és a törtrészt levágja?


De még a kérdésed se olvasta el figyelmesen:
és ezt írja be a float típusú mezőbe: 2.83333e+006


Ha meg egész lenne, akkor
2.833.333*1,2=3399999,6
nem pedig 3.399.996
Mutasd a teljes hozzászólást!
Oszd meg másokkal is!