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

明確數值轉換是在沒有隱含轉換時,使用型別轉換運算式將任何數字型別轉換成其他任何的數字型別。 下表顯示這些轉換。

轉換到

sbyte

byte、ushort、uint、ulong 或 char

byte

Sbyte 或 char

short

sbyte、 byte、 ushort、 uint、 ulong 或 char

ushort

sbyte、 byte、 short 或 char

int

sbyte byte、 short、 ushort、 uint、 ulong、 或 char

uint

sbyte、byte、 short、 ushort、 int 或 char

long

sbyte、 byte、 short、 ushort、 int、 uint、 ulong 或 char。

ulong

sbyte、 byte、 short、 ushort、 int、 uint、 long 或 char。

char

sbyte、byte 或 short

float

sbyte、 byte、 short、 ushort、 int、 uint、 long、 ulong、 char、 或 decimal

double

sbyte、 byte、 short、 ushort, int、 uint、 long、 ulong、 char、 float、 或 decimal

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# 語言規格

請參閱

參考

轉型和型別轉換 (C# 程式設計手冊)

() 運算子 (C# 參考)

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

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

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

概念

C# 程式設計手冊

其他資源

C# 參考