Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Martin Srdoš:28.7.2015 17:13

Zdravím, nikde jsem nenašel návod na můj problém, tak se ptám:
Počítám peníze, sčítám je, násobím a nakonec zaokrouhluji na koruny. Používám double, protože při násobení 21% DPH vyjde číslo reálné. Po zaokrouhlení mi pak vyjde celé. A to je výsledek. Můj problém je v tom zaokrouhlování, že ne vždy se podaří metodě Math.Round(double d) zakrouhlit správně (například 1,50 zaokrouhlí na 1,-). Říkám si, jestli to není tím, co je double zač, ale rozhodnout to s jistotou nedokážu. Možná by pomohlo používat integer místo double tak šikovně, že by byla přesnost třeba na tisíciny (to by podle mě mělo bohatě stačit). Moje představa je počítat s int místo double včetně tisícin a ve výsledku to vydělit 1000 a ten zbytek dát za desetinou čárku. Existuje třída, která to obstará? A je opravdu ten problém se zaokrouhlováním kvůli tomu, že je to v typu double?

 
Odpovědět
28.7.2015 17:13
Avatar
Luboš Běhounek Satik:28.7.2015 17:21

Decimal.

U float/double je problém už při ukládání čísel, protože se ukládají jako logaritmus o základu 2, decimal má základ 10.

Ale od zaokrouhlení při výpočtech tě to nezachrání :)

Nahoru Odpovědět
28.7.2015 17:21
https://www.facebook.com/peasantsandcastles/
Avatar
Odpovídá na Luboš Běhounek Satik
Martin Srdoš:30.7.2015 6:56

A jak by se to mělo "správně" řešit?

 
Nahoru Odpovědět
30.7.2015 6:56
Avatar
Odpovídá na Martin Srdoš
Luboš Běhounek Satik:30.7.2015 7:10

Jediný, co můžeš dělat je používat ten Decimal :)

Nahoru Odpovědět
30.7.2015 7:10
https://www.facebook.com/peasantsandcastles/
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.