明示的な数値変換の一覧表 (C# リファレンス)
更新 : 2007 年 11 月
暗黙の型変換が行われない場合に、明示的な数値の変換を行います。キャスト式を使用して任意の数値型を他の数値型に変換します。これらの変換を次に示します。
変換前 |
変換後 |
---|---|
byte、ushort、uint、ulong、または char |
|
Sbyte または char |
|
sbyte、 byte、 ushort、 uint、 ulong、または char |
|
sbyte、 byte、 short、または char |
|
sbyte、 byte、 short、 ushort、 uint、 ulong、、または char |
|
sbyte、byte、 short、 ushort、 int、または char |
|
sbyte、 byte、 short、 ushort、 int、 uint、 ulong、または char |
|
sbyte、 byte、 short、 ushort、 int、 uint、 long、または char |
|
sbyte、byte、または short |
|
sbyte、 byte、 short、 ushort、 int、 uint、 long、 ulong、 char、、または decimal |
|
sbyte、 byte、 short、 ushort、 int、 uint、 long、 ulong、 char、 float、、または decimal |
|
sbyte、 byte、 short、 ushort、 int、 uint、 long、 ulong、 char、 float、または double |
解説
明示的な数値変換によって、有効桁数が桁落ちしたり、例外がスローされる場合があります。
decimal 値を整数型に変換すると、値は一番近い整数値に丸められます。結果の整数値が変換先の型の範囲を超えた場合は、OverflowException がスローされます。
double 値または float 値を整数型に変換すると、値が切り捨てられます。整数値が、変換後の値の範囲を超えた場合は、オーバーフロー チェック コンテキストに従います。checked コンテキストでは、OverflowException がスローされます。これに対して、unchecked コンテキストでは、変換後の型の未指定値に変換されます。
double から float への変換では、double 値は最も近い float 値に丸められます。double 値が、変換後の型の範囲外であるため格納できない場合は、0 または無限大になります。
float または double から decimal への変換では、変換前の値が decimal 表記に変換され、必要に応じて小数第 28 位までの近似値に丸められます。変換元の値に応じて、次のいずれかが生じる場合があります。
変換元の値が小さすぎて decimal で表すことができない場合、結果は 0 になります。
変換元の値が非数 (NaN)、無限大、または大きすぎて decimal で表すことができない場合は、OverflowException がスローされます。
decimal から float または double への変換では、decimal 値は最も近い double 値または float 値に丸められます。
明示的な変換の詳細については、『C# 言語仕様』の「6.2 明示的な変換」を参照してください。仕様にアクセスする方法の詳細については、「C# 言語仕様」を参照してください。