Antar att det har något med hur det ligger i minnet och hur datorn räknar, detta löste det iallfall.
_totalCredit = Math.Round(_totalCredit + item.Sum, 2);
4 svar · 548 visningar · startad av Nickemannen
Jag gör i en loop följande
totaltValue += item.Value;
I ett fall när, båda är av typen double
totalValue = -25317.51
och item.Value = -15997.86
så blir resultatet -41315.369999999995 när det borde bli -41315,37
Detta inträffar i vissa andra fall också.
Varför inträffar detta? Kan jag undvika det?
Annars måste jag ju runda av efter varje uträkning och det känns lite tråkigt.
Antar att det har något med hur det ligger i minnet och hur datorn räknar, detta löste det iallfall.
_totalCredit = Math.Round(_totalCredit + item.Sum, 2);
Avrunding kan ge missvisande resultat.
Exempel:
3,333*199=663,267
3,33*199=662,67
663,267-662,67=0,597
Med stora tal(summor) kan felmarginalen bli väsentlig.
Double och float är inte exakta, decimal är det däremot och är den datatyp man bör använda för valuta.
Självklart skall man använda decimal som ni säger!!!!