decimal (C# リファレンス)
decimal キーワードは、128 ビットのデータ型を示します。decimal 型は、浮動小数点型よりも有効桁数が多く、範囲が狭いので、財務や金融の計算に適しています。decimal 型の概算の範囲と有効桁数は、次のとおりです。
型 | おおよその範囲 | 有効桁数 | .NET Framework 型 |
---|---|---|---|
decimal |
±1.0 × 10−28 to ±7.9 × 1028 |
有効桁数 28 ~ 29 |
リテラル
実数値リテラルを decimal として扱うには、サフィックス m または M を使用します。次に例を示します。
decimal myMoney = 300.5m;
サフィックス m がない場合は double として扱われ、コンパイラ エラーになります。
変換
整数型は、暗黙的に decimal に変換され、結果は decimal になります。したがって、サフィックスなしで整数リテラルを使用して 10 進変数を初期化できます。次に例を示します。
decimal myMoney = 300;
浮動小数点型と decimal 型の間に暗黙の型変換はありません。2 つの型の間で変換を実行するには、キャストを使用する必要があります。次に例を示します。
decimal myMoney = 99.9m;
double x = (double)myMoney;
myMoney = (decimal)x;
decimal 型と数値の整数型を同じ式に混在させることもできます。ただし、decimal 型と浮動小数点型をキャストなしで混在させると、コンパイル エラーになります。
暗黙の数値変換の詳細については、「暗黙的な数値変換の一覧表 (C# リファレンス)」を参照してください。
明示的な数値変換の詳細については、「明示的な数値変換の一覧表 (C# リファレンス)」を参照してください。
10 進出力の書式指定
結果の書式を指定するには、String.Format メソッドを使用するか、String.Format() を呼び出す System.Console.Write メソッドを使用します。通貨書式を指定するには、例 2 に示すように、標準の通貨の書式指定文字列 "C" または "c" を使用します。String.Format メソッドの詳細については、「System.String.Format(System.String,System.Object)」を参照してください。
使用例
ここでは、同じ式に decimal と int が混在している例を示します。結果は decimal 型になります。
double 変数と decimal 変数を追加する場合には、次のようなステートメントを使用します。
double x = 9;
Console.WriteLine(d + x); // Error
次のエラー メッセージが表示されます。
Operator '+' cannot be applied to operands of type 'double' and 'decimal'
// keyword_decimal.cs
// decimal conversion
using System;
public class TestDecimal
{
static void Main ()
{
decimal d = 9.1m;
int y = 3;
Console.WriteLine(d + y); // Result converted to decimal
}
}
出力
12.1
ここでは、通貨の書式指定文字列を使用して、出力の書式を指定する例を示します。小数点以下の桁数が $0.99 を超えるため、x
を丸めている点に注意してください。最大固定桁数を表す変数 y
は、適切に書式設定された数値がそのまま表示されます。
// keyword_decimal2.cs
// Decimal type formatting
using System;
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);
}
}
出力
My amount = $1.00 Your amount = $9,999,999,999,999,999,999,999,999,999.00
C# 言語仕様
詳細については、「C# 言語仕様」の次のセクションを参照してください。
1.3 型と変数
4.1.7 Decimal 型
参照
関連項目
C# のキーワード
整数型の一覧表 (C# リファレンス)
組み込み型の一覧表 (C# リファレンス)
暗黙的な数値変換の一覧表 (C# リファレンス)
明示的な数値変換の一覧表 (C# リファレンス)
Decimal Structure