2008-09-30 123 views

回答

11

必須使用Decimal數據類型..

十進制關鍵字表示一個128位的數據類型。與浮點類型相比,小數類型具有更高的精度和更小的範圍,因此適用於財務和貨幣計算。

+5

你知道,這不是「更精確」這一點很重要,它的精度類型。十進制是基於一個10個基本的比例,並且將始終精確地表示其範圍內的一個十進制數。然而,浮點類型是基於二進制尺度的,並且可能會描述一個不屬於基數10 – nedruod 2008-09-30 00:53:56

2

這可能是通過反射,但原因可能是它的出現是FromOACurrency()ToOACurrency()靜態方法上System.Decimal,這是自/至OLE自動化Currency類型的Visual Basic 6層的用途convering。

7

使用十進制。 Currency提供的所有函數都是Decimal,FromOACurrency和ToO貨幣的靜態方法。

-3

您實際上不能使用貨幣的十進制數。當你分裂時,你會在以後遇到更大的問題。假設你有1美元分成3分,即1/3 = 0.33(四捨五入),但是3×0.33 = 0.99!= 1.它可能很小,但是當你在會計和答案中這樣做時,一個巨大的數字。這也是爲什麼.Net(默認其他編程語言)中默認的向上/向下行爲是下一個偶數值(也稱爲銀行家舍入)的原因,以最大限度地減少與我們正常的「人爲」舍入方式相比的會計錯誤。

閱讀此頁面以獲得更清晰的解釋和專門處理金錢的課程。 Code Project : A Money type for the CLR

兼談Rounding

+6

-1的部分,因爲此答案具有誤導性。十進制是專門用於正確存儲資金的數據類型。做計算是一種不同的問題,取決於上下文:如果你想在不損失金錢的情況下平均分配資金,你應該使用專門的函數/方法/類來正確地執行它(參見http:// martinfowler的.com/eaaCatalog/money.html)。 關於Code Project的引用文章基於一些無效的假設:不理解Decimal以基數10存儲,測試也可以使用Decimal成功,但假定它們將失敗。 – 2014-06-12 12:00:43

相關問題