2011-07-14 28 views
4

當我輸入一個從C#到數據庫的雙精度數時,我在數據庫中使用了一個真正的類型。當我檢查這個值時,它就是我輸入的值。當從DB獲得一個真實的數據到C中的雙精度時,SQL添加隨機小數點#

現在,當我去從數據庫中檢索值並將其存儲到C#中時,它會在隨後的結尾處添加隨機小數值。在數據庫中的數字是,我想正確的值,但作爲雙C#中的值就是隨機的(有時更高有時低,那麼實際值)。

- Enter into the db 123.43 as a double to an sql real. 
- View the value in the DB, it's exactly 123.43 
- Get the value from the DB and store into a C# double, value in the double is now 123.4300000305176 

我曾嘗試在DB中將類型更改爲浮點數,小數點等,但這些類型實際上會在將數據放入數據庫時​​改變其值,使其與上述格式相同。

任何幫助什麼正在進行或如何解決它?

回答

3

您應該使用十進制類型。進一步的解釋請參閱What represents a double in sql server?

+0

是我試圖使用十進制(13,8),但這使得值做與上述相同的事情。除了在這種情況下,它發生在將數值放入數據庫中,而不是僅在我嘗試檢索數據時。 – DMCApps

+3

您需要在數據庫和C#代碼中使用Decimal。 –

+0

所以我在DB和小數在C#中的小數和它的工作原理......但任何人都可以解釋爲什麼真正加倍會有這種行爲?特別是當它出現在一個表格中但不是另一個時:S – DMCApps

相關問題