Decimal 資料類型 (Visual Basic)
保存帶正負號的 128 位元 (16 位元組) 值,代表可變倍率 10 倍的 96 位元 (12 位元組) 整數。 縮放係數會指定小數點右邊的位數;範圍從 0 到 28。 若縮放為 0 (無小數位數),最大可能值為 +/-79,228,162,514,264,337,593,543,950,335 (+/-7.9228162514264337593543950335E+28)。 使用 28 個小數位數時,最大值為 +/-7.9228162514264337593543950335,而最小的非零值為 +/-0.0000000000000000000000000001 (+/-1E-28)。
備註
Decimal
資料類型可為數字提供最大的有效位數。 其最多可支援 29 個有效位數,且可以代表超過 7.9228 x 10^28 的值。 其特別適用於需要大量數字但無法容許進位錯誤的計算,例如財務。
Decimal
的預設值為 0。
程式設計提示
精確度。
Decimal
不是浮點數資料類型。Decimal
結構會保存二進位整數值,以及正負號位元和整數縮放係數,其可指定值的哪個部分是小數點。 因此,Decimal
數字在記憶體中具有較浮點類型 (Single
和Double
) 更精確的表示法。效能。
Decimal
資料類型是所有數值類型中最慢的一種。 在選擇資料類型之前,您應該先根據效能來衡量精確度的重要性。擴展。
Decimal
資料類型可擴展為Single
或Double
。 這表示,您可以將Decimal
轉換成這些類型的任何一種,而不會發生 System.OverflowException 錯誤。後置的零。 Visual Basic 不會將後置零儲存在
Decimal
常值中。 不過,Decimal
變數會保留任何以計算方式取得的後置零。 說明如下例。Dim d1, d2, d3, d4 As Decimal d1 = 2.375D d2 = 1.625D d3 = d1 + d2 d4 = 4.000D MsgBox("d1 = " & CStr(d1) & ", d2 = " & CStr(d2) & ", d3 = " & CStr(d3) & ", d4 = " & CStr(d4))
上述範例中的
MsgBox
輸出如下所示:d1 = 2.375, d2 = 1.625, d3 = 4.000, d4 = 4
型別字元。 將常值類型字元
D
附加到常值,會強制其成為Decimal
資料類型。 將識別項類型字元@
附加到任何識別項,會強制其成為Decimal
。Framework 型別。 在 .NET Framework 中對應的類型為 System.Decimal 結構。
範圍
您可能需要使用 D
類型字元,將大型值指派給 Decimal
變數或常數。 此需求是因為編譯器會將常值解譯為 Long
,除非常值型別字元遵循常值,如下列範例所示。
Dim bigDec1 As Decimal = 9223372036854775807 ' No overflow.
Dim bigDec2 As Decimal = 9223372036854775808 ' Overflow.
Dim bigDec3 As Decimal = 9223372036854775808D ' No overflow.
bigDec1
的宣告不會產生溢位,因為對其指派的值會落在 Long
的範圍中。 Long
值可指派給 Decimal
變數。
bigDec2
的宣告會產生溢位錯誤,因為對其指派的值對於 Long
而言過大。 因為數值常值無法先解譯為 Long
,所以無法指派給 Decimal
變數。
針對 bigDec3
,常值型別字元 D
會強制編譯器將常值解譯為 Decimal
,而不是解譯為 Long
,藉此解決問題。