明確數值轉換表 (C# 參考)
明確數值轉換是在沒有隱含轉換時,使用型別轉換運算式將任何數字型別轉換成其他任何的數字型別。 下表顯示這些轉換。
從 |
轉換到 |
---|---|
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 值轉換成整數類資料型別時,此值會被截斷。 如果產生的整數值超過目的值的範圍,就會根據溢位檢查內容來決定結果。 在已檢查內容中,則會擲出 OverflowException,而在未檢查內容中,則會產生目的型別未指定的值。
當您將 double 轉換成 float 時,double 值會捨入為最接近的 float 值。 如果 double 值太小或太大而不適用於目的型別,結果將會為零或無限大。
當您將 float 或 double 轉換成 decimal 時,來源值會轉換為 decimal 表示,並捨入至最接近第 28 位小數位置的數字 (如果需要的話)。 依據來源值,會發生下列其中一種的結果:
如果來源值太小,無法以 decimal 表示,結果就會變成零。
如果來源值是 NaN (非數字)、無限大或太大,以致無法以 decimal 表示時,就會擲回 OverflowException。
當您將 decimal 轉換成 float 或 double 時,decimal 值會捨入為最接近的 double 或 float 值。
如需明確轉換的詳細資訊,請參閱 C# 語言規格中的 Explicit。 如需如何存取規格的詳細資訊,請參閱 C# 語言規格。