2010-12-07 24 views
0

我有一個項目,我得到了一些實體的價值和總結到另一個實體的屬性。簡單的十進制值總和計算問題

現在,如果說總和(5,00 + 100,01 + 16.236 + 252,03)= 373,27基於Windows 7的計算器和基於簡單的數學。

但是,當發生這種情況與C#代碼

entity.SumValue + = someEntity1.Value .... entity.SumValue + = someEntity2.Value ....

SumValue = 373,26

我(但不是在所有情況下)損失一分(歐元):P

任何想法得到我需要的?

+1

你爲什麼用`+ =`操作符添加...? – 2010-12-07 17:08:36

+0

問題是舍入錯誤,但如果您已經在使用`Decimal`,則必須有其他事情正在進行。 – ChrisF 2010-12-07 17:10:46

回答

1

如果您使用的是decimal,C#實際上不可能有計算錯誤。 (我的意思是,精度總是有限制的,但是在逗號後有3位數的小數字時不會這樣)...

其他地方一定有問題。例如,如何創建小數?他們是否曾經變成雙打和回來,例如從數據庫中讀取數據?

+0

我使用Linq to SQL從數據庫中獲取對象,然後對每個實體進行foreach,我想從中獲取十進制值並將其總和爲另一個enity decimal屬性,永遠不會轉換爲任何其他類型。你是什​​麼意思爲什麼使用+ =,我會嘗試sum = sum + value。 – 2010-12-07 17:24:43

0

用下面的代碼的總和等於373.276

decimal sum = 0m; 
sum += 5.00m; 
sum += 100.01m; 
sum += 16.236m; 
sum += 252.03m; 

那麼究竟是什麼與你的區別?