共用方式為


decimal (C# 參考)

decimal 關鍵字表示 128 位元的資料類型。 相較於浮點類型,decimal 類型的精確度較高且範圍較小,因此非常適合財務和金融計算。 下表顯示 decimal 類型的大概範圍和精確度。

類型

大概範圍

精確度

.NET Framework 類型

decimal

(-7.9 x 1028 至 7.9 x 1028) / (100 至 28)

28-29 個有效數字

Decimal

常值

如果要將數值實數常值視為 decimal 處理,請使用後置字元 m 或 M,例如:

decimal myMoney = 300.5m;

如果沒有後置字元 m,會將數字視為 double 處理,因而產生編譯器錯誤。

轉換

整數類資料類型會隱含轉換成 decimal,而且結果會判斷值為 decimal。 因此,您可以使用整數常值來初始化 Decimal 變數,而不需要後置字元,如下所示:

decimal myMoney = 300;

浮點類型和 decimal 類型之間沒有隱含轉換,因此,這兩種類型之間必須使用轉型進行轉換。 例如:

decimal myMoney = 99.9m;
double x = (double)myMoney;
myMoney = (decimal)x;

您也可以在同一個運算式中混合使用 decimal 和數值整數類資料類型。 然而,未使用轉型就混合使用 decimal 與浮點類型會造成編譯錯誤。

如需隱含數值轉換的詳細資訊,請參閱隱含數值轉換表 (C# 參考)

如需明確數值轉換的詳細資訊,請參閱明確數值轉換表 (C# 參考)

格式化 Decimal 輸出

您可以使用 String.Format 方法,或透過會呼叫 String.Format() 的 Console.Write 方法格式化結果。 貨幣格式是使用標準貨幣格式字串 "C" 或 "c" 所指定,如本文稍後的第二個範例所示。 如需 String.Format 方法的詳細資訊,請參閱 String.Format

範例

下列範例會嘗試加入 double 和 decimal 變數,藉此造成編譯器錯誤。

double dub = 9;
// The following line causes an error that reads "Operator '+' cannot be applied to 
// operands of type 'double' and 'decimal'"
Console.WriteLine(dec + dub); 

// You can fix the error by using explicit casting of either operand.
Console.WriteLine(dec + (decimal)dub);
Console.WriteLine((double)dec + dub);

結果會是下列錯誤:

Operator '+' cannot be applied to operands of type 'double' and 'decimal'

在這個範例中,decimal 和 int 會在同一個運算式中混用。 結果會判斷值為 decimal 類型。

public class TestDecimal
{
    static void Main()
    {
        decimal d = 9.1m;
        int y = 3;
        Console.WriteLine(d + y);   // Result converted to decimal
    }
}
// Output: 12.1

在這個範例中,輸出是使用貨幣格式字串格式化。 您會發現,x 會捨入,因為小數位數超過 $0.99。 代表最大確切位數的變數 y 會以正確格式精確顯示。

public class TestDecimalFormat
{
    static void Main()
    {
        decimal x = 0.999m;
        decimal y = 9999999999999999999999999999m;
        Console.WriteLine("My amount = {0:C}", x);
        Console.WriteLine("Your amount = {0:C}", y);
    }
}
/* Output:
    My amount = $1.00
    Your amount = $9,999,999,999,999,999,999,999,999,999.00
*/

C# 語言規格

如需詳細資訊,請參閱<C# 語言規格>。語言規格是 C# 語法及用法的限定來源。

請參閱

參考

C# 關鍵字

整數類資料類型表 (C# 參考)

內建類型資料表 (C# 參考)

隱含數值轉換表 (C# 參考)

明確數值轉換表 (C# 參考)

Decimal

概念

C# 程式設計手冊

標準數值格式字串

其他資源

C# 參考