Diskuze: Počítání reálných čísel přesně

C# .NET .NET (C# a Visual Basic) Počítání reálných čísel přesně American English version English version

Avatar
srdosm
Člen
Avatar
srdosm:

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):

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  +1 28.7.2015 17:21
:)
Avatar
srdosm
Člen
Avatar
Odpovídá na Luboš Běhounek (Satik)
srdosm:

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

 
Nahoru Odpovědět 30.7.2015 6:56
Avatar
Odpovídá na srdosm
Luboš Běhounek (Satik):

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

Nahoru Odpovědět 30.7.2015 7:10
:)
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.