共用方式為


Decimal 資料型別 (Visual Basic)

更新:2007 年 11 月

保留帶正負號的 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 結構會保存二進位整數值,加上正負號位元和整數縮放比例,指定值的哪一部分是小數部分。因為這個原因,比起浮點數型別 (Single 和 Double),Decimal 數字在記憶體裡具有更精確的表示。

  • 效能,Decimal 資料型別是所有數字型別 (Numeric Type) 中效能最慢的資料型別。選擇資料型別之前,應先衡量精確度和效能的重要性。

  • 擴展,Decimal 資料型別會擴展至 Single 或 Double。這表示您可以將 Decimal 轉換成這些型別的其中一個,而不會發生 System.OverflowException 錯誤。

  • 結尾的零,Visual Basic 不會將結尾的零儲存在 Decimal 常值 (Literal) 中。不過,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 變數或常數。下列範例將說明這點。

Dim bigDec1 As Decimal = 9223372036854775807   ' No overflow.
Dim bigDec2 As Decimal = 9223372036854775808   ' Overflow.
Dim bigDec3 As Decimal = 9223372036854775808D  ' No overflow.

除非常值後面接著常值型別字元,否則編譯器會將常值解譯為 Long。bigDec1 的宣告不會產生溢位,因為其值在 Long 的範圍內。不過,bigDec2 的值對於 Long 而言太大,所以編譯器會產生錯誤。常值型別字元 D 會強制編譯器將常值解譯為 Decimal,以解決 bigDec3 的問題。

請參閱

概念

有效率地使用資料型別

參考

資料型別摘要 (Visual Basic)

System.Decimal

Decimal.Decimal

字串資料型別 (Visual Basic)

Double 資料型別 (Visual Basic)

型別轉換函式

轉換摘要