2015-10-20 40 views
-2

如果我需要爲現值,即C#中值爲20 000 000,50的數據類型?

20 000 000,50 
12 000 000 
2 000 000,75 
    100 000,866 
18 000 000,42 

我需要使用C#什麼數據類型?

+1

爲了澄清 - 是','小數點在您的區域設置分離器? –

+1

這是一個值還是5個不同的值? 2.,3.和4.例子有領先的白色空間? –

+1

你需要呈現數字對還是很大的數字? –

回答

1

簡短的回答是:decimal

替代值 - double對於貨幣值不是首選,因爲美分是二進制編碼的,並且經常將值舍入(例如,代替100.04,您可能有100.03999999)。

+4

解釋爲什麼會盡管如此,讓你的答案更好。 –

+1

來自MSDN:「十進制關鍵字表示一個128位數據類型,與浮點類型相比,小數類型具有更高的精度和更小的範圍,因此適用於財務和貨幣計算。」十進制數字有28-29個有效數字。這就是爲什麼這種類型在這種情況下是最合適的。 –

+0

@FrédéricHamidi問題不是「爲什麼」,而是「哪個」數據類型。另一種選擇 - 'double'不是貨幣價值的首選,因爲美分是二進制編碼的,並且通常這些值是四捨五入的(例如,而不是100.04,你可能有100.03999999)。關於差異有足夠的解釋,哪些對於特定目的更好。 – i486

4

所以你與工作浮點值。你有兩個選擇:

  1. 十進制

使用Double如果你給出顯著數字,例如2000000.50實際上是指,例如,2.00e6(3位有效數字)。 Usuallly這些類型的值是從物理世界:ampers

使用Decimal如果你給出小數點,例如後顯著位2000000.50實際上是指2000000.500(3位數小數點後)。 通常這些值來自金融:美元和美分

+1

+1。確切地說:正確的數據類型取決於處理值的含義,這是OP未指定的。 – Konamiman

1

我們也使用了十進制。

十進制= 128位的精確的十進制值與28-29顯著 數字,
雙= 64位雙精度浮點型,
浮子= 32位單精度浮點型,
INT = 32位 符號整數型