2009-12-18 65 views
2

是否將sql數據類型錢映射到c#float?確實有錢地圖漂浮好嗎?

+0

另外mrblah你有一個非常高的點數。在發佈這樣的問題之前谷歌甚至搜索這個相同的確切問題。它已被問了數百次。 – JonH 2009-12-18 19:42:03

+0

@JonH:一定要在SO上搜索。但它從來沒有打算在Google之後成爲你的第二選擇。這個網站是專門設計,使谷歌搜索不必要的。給人們一個值得信賴的網站來獲得答案,而不是依靠Google向我們指出數百個不同和不可靠的網站。 – jalf 2009-12-18 19:48:31

+0

@jalf - 我的觀點是搜索是必要的,而不是發佈一個簡單的問題。除此之外,如果你在谷歌搜索,結果會在這裏指出你的相當大的機會。如果你處於編碼的中間,並且你需要一些真正快速的東西,那麼使用谷歌搜索就沒有任何問題。 – JonH 2009-12-18 20:07:11

回答

12

不......它映射到decimal。如果該列允許爲空,則映射到Nullable<Decimal>

Mapping CLR Parameter Data

float不夠精確用於貨幣計算。你會在所有地方失去/獲得金錢。

+1

只有當列允許空值時 - 否則,它直接映射到十進制。 – 2009-12-18 19:36:09

+0

@Reed - 感謝您的澄清。領先於我自己。適當更新。 – 2009-12-18 19:37:19

+0

爲什麼它沒有顯示答案被編輯? – CSharpAtl 2009-12-18 19:37:58

2

我會使用十進制。

十進制值類型表示 十進制數範圍從正 79,228,162,514,264,337,593,543,950,335 到負 79,228,162,514,264,337,593,543,950,335。 十進制值類型適用於需要 的大量重要積分 和小數位數和不捨入 錯誤的財務計算 。十進制類型不包括 消除了四捨五入的需要。 相反,它最大限度地減少了由於 四捨五入造成的錯誤。

0

編號

貨幣映射到Decimal。如果MONEY列允許空值,則它將映射到Nullable<Decimal>.。有關詳細信息,請參見SQL-CLR Type Mapping

浮點數不夠精確,無法用於處理貨幣的數值計算。您應該始終使用十進制值進行所有計算。

0

不,float精度太低,無法處理貨幣價值。七位數字不會讓你走得很遠。由於數字的表示方式,浮點類型也容易出現舍入誤差。使用Decimal數據類型。

2

只有當你想賠錢。

+3

snark +1,無可替代-1。 – Will 2009-12-18 19:38:11