2011-01-31 59 views
0

我在我的SQL Express數據庫中有一些小數(18,2)字段。十進制值未被正確舍入

現在當一些聚合碰巧得到一個結果。我有時會失去1分。

說的結果應該是192,84歐元我的程序顯示192,83歐元,但如果你使用計算器顯示192,84的聚合。

任何想法爲什麼會發生這種情況。我使用格式字符串貨幣的DevExpress控件。 我有一個想法將字段更改爲十進制(18,3)你認爲什麼?

謝謝

[編輯]

現在,當值suming首次展示(例如1.074,64爲1.074,65)是說,我可以看到它幾輪下來,但正確的是第二個結尾,65。

例如:194,61 + 182,20 + 697,84 = 1.074,65,但它下降到1.074,64。如果您再次嘗試獲取這些數值,它將顯示正確....

您認爲我應該總結嗎?什麼是十進制值最好的整數方法?

一些代碼:

SumingTotal = AnObject.ListOfAType.Sum(p => p.DecimalProperty) + 
               (DecimalValue1 + DecimalValue2); 

應該等於1.074,65但顯示1.074,64如果我走出顯示這些 值的環境,並嘗試一些後再次檢查它們保存在數據庫中,並重新計算雖然在表單中正確顯示但在數據庫中已經是錯誤的。

謝謝。

回答

0

數據如何存儲在數據庫中?浮動?

如果是錢,請將其存儲爲十進制(18,2)。編輯: 什麼是「ValuesDecimals」?如果你說SELECT SUM(myfield)和myfiled是18,3,那麼它將是正確的。

這聽起來像是你總結了「ValuesDecimals」,這可能是錯誤的根源。

請嘗試顯示完整驗證碼?

+0

我正在將它存儲在帶有十進制類型的數據庫字段(18,2)我不明白。 – 2011-01-31 15:57:17