Forum » Programiranje » Kako zaokrožiti? Cena brez davka + popust + DDV decimalke
Kako zaokrožiti? Cena brez davka + popust + DDV decimalke
direstrait ::
Zdravo, kako bi to zadevo zaokrožili na dve decimalki, da bi številke štimale?
V ceni brez DDV-ja so lahko različni izdelki z različnimi davčnimi stopnjami.
edit: razmišljam, da bi davku dodal 1 cent... ampak zakaaaj a ni že dovolj davka :)
V ceni brez DDV-ja so lahko različni izdelki z različnimi davčnimi stopnjami.
Cena brez DDV: 455,16393 EUR ~ 455.16 -4% popusta: -18,2065574 EUR ~ -18.21 DDV: 96,1306230 EUR ~ 96.13 Skupaj z DDV: 533,0879956 EUR ~ 533.09 (tu pa po zaokroževanju pride 533.08)
edit: razmišljam, da bi davku dodal 1 cent... ampak zakaaaj a ni že dovolj davka :)
- spremenil: direstrait ()
jernejl ::
Kolikor vem, je obvezna sestavina na računu osnova za DDV ter znesek DDV. Oboje bi moralo biti izraženo na dve decimalki.
Koliko decimalk pa uporabljaš, preden prideš do osnove, je prepuščeno tebi (morata biti najmanj dve).
Torej na začetku se moraš sploh odločiti, ali bo cena brez DDV 455,16393 ali pa 455,16 eur.
Na to ceno obračunaš popust (vsaj na toliko decimalk, kolikor jih ima cena). Znesek zaokrožiš na dve decimalki in dobiš osnovo za DDV.
Koliko decimalk pa uporabljaš, preden prideš do osnove, je prepuščeno tebi (morata biti najmanj dve).
Torej na začetku se moraš sploh odločiti, ali bo cena brez DDV 455,16393 ali pa 455,16 eur.
Na to ceno obračunaš popust (vsaj na toliko decimalk, kolikor jih ima cena). Znesek zaokrožiš na dve decimalki in dobiš osnovo za DDV.
Mitja Bonča ::
Lahko uporabiš Math.Round metodo, katera ti zaokroči decimalno število.
V primeru, da želiš string, potem lahko uporabiš črko F:
V primeru, da želiš zaokrožiti valuto, potem uporabi črko C:
V primeru, da želiš string, potem lahko uporabiš črko F:
decimal decValue = 1.234567m; decimal dec2 = Math.Round(decValue, 2); string str2 = decValue.ToString("F");
V primeru, da želiš zaokrožiti valuto, potem uporabi črko C:
string str3 = decValue.ToString("C");
ZaphodBB ::
Vedno zeliš zaokrožit pred seštevanjem, sicer bo prihajalo do vse sorte težav. Če imaš aplikacijo, ki ima veliko (velikih) zneskov in delaš analize lahko prihaja do cele množice napak.
V splošnem želiš uporabljat finančne podatkovne strukture v kolikor jih tvoj jezik podpira. S financami nikdar ne delaš s plavajočimi števili, sicer te bodo stranke tožile ali te bodo šefi (upravičeno) odpustili, da kakšne inšpekcije niti ne omenjamo.
V jezikih, ki nimajo decimalnega podatkovnega tipa (npr. javascript) moraš obvezno uporabljati celoštevilsko aritmetiko. - interno namesto 50,13 shraniš 5013 in potem na izhodu deliš s 100.
Tako se dela pravilno...
V splošnem želiš uporabljat finančne podatkovne strukture v kolikor jih tvoj jezik podpira. S financami nikdar ne delaš s plavajočimi števili, sicer te bodo stranke tožile ali te bodo šefi (upravičeno) odpustili, da kakšne inšpekcije niti ne omenjamo.
V jezikih, ki nimajo decimalnega podatkovnega tipa (npr. javascript) moraš obvezno uporabljati celoštevilsko aritmetiko. - interno namesto 50,13 shraniš 5013 in potem na izhodu deliš s 100.
Tako se dela pravilno...
mn ::
interno namesto 50,13 shraniš 5013 in potem na izhodu deliš s 100
Popravek: interno delaš vsaj z 50130 in potem deliš z 1000. Na ta način lahko še zaokrožuješ pravilno. Razen seveda še zgolj seštevaš. Potem je zgornji pristom pravilen.
ZaphodBB ::
@mn: ne vidim poante? V JavaSriptu recimo je rezultat operacije lahko float, tudi zaokrožimo ga lahko po mili volji. Važno je, da v operacije dobivaš cela števila.
Česa ne razumem?
Česa ne razumem?
jan_g ::
Ne smes operirati s floati, ker se ti napake "nabirajo". Odvisno od situacije lahko pride do nezanemarljivih odstopanj, kar pa ni sprejemljivo v racunovodstvu.
Mavrik ::
@mn: ne vidim poante? V JavaSriptu recimo je rezultat operacije lahko float, tudi zaokrožimo ga lahko po mili volji. Važno je, da v operacije dobivaš cela števila.
Česa ne razumem?
Tako kot si rekel - prblem imaš v tem da se v IEEE754 nekaterih števil ne da predstaviti. Zato se za take operacije VEDNO uporabljajo knjižnice za računanje z neomejeno natančnotjo (t.i. arbitrary precision arithmetic). Java ima za ta namen razred BigDecimal in sorodne. Tudi zato da ne delaš neumnosti z množenjem s 100 in 1000, ki privede do ogromne količine hroščev v kodi.
Samo nekaj kar vsi luftate je pa drugo: KDAJ zaokrožiti je TOČNO določeno v zakonodaji, zato da vsi izračuni dobivajo do DOLOČENE decimalke točne rezultate. Če boš to delal narobe, znajo biti kazni precej velike. Isto če boš imel hrošč v kodi ker si probal sam izumiti BigDecimal. Dajte se ne zajebavati s finančnimi postavkami, ker davčne revizije potem niso zabavne, še posebej če moraš šefu razlagati zakaj mora firma zaradi tvoje nesposobnosti plačati pet-do-šest-mestno kazen.
ZDDV trenutno pravi nekaj takšnega:
Zavezanec navaja, da ima zaradi uvedbe EUR-a po 1. 1. 2007 težave pri knjiženju vstopnega DDV na podlagi dobaviteljevih računov. Dobavitelj na računu izkazuje vrednost blaga npr. 4,02 na enoto * 16 kosov = 64,32 kar je po njegovem mnenju osnova za DDV, od katere bi moral biti obračunan DDV in sicer v znesku 12,86 EUR. Dobavitelj mu v navedenem primeru obračuna DDV v znesku 12,85 EUR, ker je vrednost na enoto 4,0150* 16 kosov =64,24 in je ta osnova prenizka. Zanima ga, ali je njegovo mnenje, da bi dobavitelj moral obračunati DDV na računu od vrednosti na enoto izražene z dvema decimalkama pravilno. V nadaljevanju pojasnjujemo:
Zakon o uvedbi eura (Uradni list RS, št. 114/2006; v nadaljevanju: ZUE), o zaokroževanju govori v 19. členu. Prvi odstavek pravi, da se z dnem uvedbe eura prodajne cene za blago in storitve preračunajo na najmanj tri decimalna mesta in zaokrožijo ter izkazujejo na ne manj kot dve decimalni mesti. Tretji odstavek tega člena pa, da se morajo zneski vmesnih operacij zaokrožiti na najmanj toliko decimalnih mest, kolikor jih ima cena, iz katere je vmesna operacija pridobljena. Pri tem se za vmesne operacije štejejo operacije, pri katerih takojšnji cilj operacije ni plačilo ali knjiženje kot končni obračun ustreznega denarnega zneska.
V primeru, ki ga navaja zavezanec je dobavitelj na računu prodajno ceno za blago po preračunu v eure zaokrožil in jo izkazuje na dve decimalni mesti. Prav tako je na dve decimalni mesti zaokrožil znesek vmesne operacije, to je osnove za obračun DDV. Glede na navedeno menimo, da bi njegov dobavitelj moral obračunati DDV od osnove, zaokrožene na dve decimalni mesti (torej 4,02 EUR * 16 kosov = 64,32 EUR; 20 % DDV = 12,86 EUR).
Samo ponavljam: OBVEZNO ZAOKROŽOVANJE PO POTI PREVERI PRI RAČUNOVODJU!
The truth is rarely pure and never simple.
Zgodovina sprememb…
- spremenil: Mavrik ()
direstrait ::
Ali lahko prosim nekdo iz mojega zgornjega primera(stolpec z decimalkami) zaokroži vrednosti in napiše, kako naj bi vse te postavke zgledale zaokrožene na 2 decimalki
Hvala lepa :)
Hvala lepa :)
fosil ::
Jaz bi rekel da s kolikor decimalkami računaš, toliko jih tudi prikaži na računu.
Končni znesek pa potem zaokroži.
Nekako tako je tudi na računu za bencin, kjer se tudi računa z več decimalkami.
Končni znesek pa potem zaokroži.
Nekako tako je tudi na računu za bencin, kjer se tudi računa z več decimalkami.
Tako je!
jernejl ::
Preprosto.
Bi pa jaz ob tej priložnosti postavil neko drugo vprašanje.
Recimo, da želim prodajati izdelek po ceni 19,99 eur (to je cena z 22% DDV). Kolikšna je osnova za DDV in koliko znaša DDV?
(kolikor mi je znano, morata biti osnova ter DDV podana na dve decimalki natančno)
Cena brez DDV: 455,16 -4% popusta: -18,21 Osnova za DDV: 436,95 DDV: 96,13 Skupaj z DDV: 533,08
Bi pa jaz ob tej priložnosti postavil neko drugo vprašanje.
Recimo, da želim prodajati izdelek po ceni 19,99 eur (to je cena z 22% DDV). Kolikšna je osnova za DDV in koliko znaša DDV?
(kolikor mi je znano, morata biti osnova ter DDV podana na dve decimalki natančno)
Zgodovina sprememb…
- spremenil: jernejl ()
kunigunda ::
Jernej, v tem primeru ce imas fiksno ceno, racunas davek nazaj od nje, razlika v zaokrozevanju gre pa na racun predhodne
postavke (veleprodajna,nabavna,popust...)
postavke (veleprodajna,nabavna,popust...)
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Excel pomočOddelek: Pomoč in nasveti | 1063 (914) | PunkDude |
» | float vs decimalOddelek: Programiranje | 6235 (4368) | Looooooka |
» | Prevara? Račun za 29:47 min klicev na komercialno št. pred pol letaOddelek: Loža | 8692 (5732) | GupeM |
» | zaokrožanje števil double na dve decimalkiOddelek: Programiranje | 2008 (1729) | win64 |
» | [MS Office][Excel] zaokroževanje in spajanje podatkovOddelek: Programska oprema | 4227 (3584) | milc |