.NET의 형식 변환 표

확대 변환은 한 형식의 값을 크기가 같거나 더 큰 다른 형식으로 변환할 때 발생합니다. 축소 변환은 한 형식의 값을 크기가 더 작은 다른 형식의 값으로 변환할 때 발생합니다. 이 항목의 표에서는 두 가지 유형의 변환에서 모두 나타나는 동작을 설명합니다.

확대 변환

다음 표에서는 정보 손실 없이 수행할 수 있는 확대 변환에 대해 설명합니다.

Type 데이터 손실 없이 다음 형식으로 변환할 수 있음
Byte UInt16, Int16, UInt32, Int32, UInt64, Int64, Single, Double, Decimal
SByte Int16, Int32, Int64, Single, Double, Decimal
Int16 Int32, Int64, Single, Double, Decimal
UInt16 UInt32, Int32, UInt64, Int64, Single, Double, Decimal
Char UInt16, UInt32, Int32, UInt64, Int64, Single, Double, Decimal
Int32 Int64, Double, Decimal
UInt32 Int64, UInt64, Double, Decimal
Int64 Decimal
UInt64 Decimal
Single Double

Single 또는 Double로의 일부 확대 변환에서는 정밀도 손실이 발생할 수 있습니다. 다음 표에서는 때때로 정보 손실이 발생할 수 있는 확대 변환에 대해 설명합니다.

Type 다음 형식으로 변환할 수 있음
Int32 Single
UInt32 Single
Int64 Single, Double
UInt64 Single, Double
Decimal Single, Double

축소 변환

Single 또는 Double로의 축소 변환에서는 정보 손실이 발생할 수 있습니다. 대상 형식이 소스 크기를 제대로 표시할 수 없는 경우 결과 형식이 상수 PositiveInfinity 또는 NegativeInfinity로 설정됩니다. PositiveInfinity는 양수를 0으로 나눈 결과이며 Single 또는 Double 값이 MaxValue 필드 값을 초과하는 경우에도 반환됩니다. NegativeInfinity는 음수를 0으로 나눈 결과이며 Single 또는 Double 값이 MinValue 필드 값보다 작은 경우에도 반환됩니다. Double에서 Single로 변환하면 PositiveInfinity 또는 NegativeInfinity가 발생할 수 있습니다.

축소 변환 시 다른 데이터 형식에 대한 정보 손실도 발생할 수 있습니다. 그러나 변환 중인 형식의 값이 대상 형식의 MaxValueMinValue 필드에 지정된 범위를 벗어나면 OverflowException이 throw되며, 런타임에서 변환을 검사하여 대상 형식의 값이 해당 MaxValue 또는 MinValue를 초과하지 않는지 확인합니다. System.Convert 클래스로 수행하는 변환은 항상 이런 방식으로 검사됩니다.

다음 표에서는 System.Convert 사용 시 OverflowException을 throw하는 변환 또는 변환 중인 형식의 값이 정의된 결과 형식 범위를 벗어나는지 확인한 모든 변환을 보여줍니다.

Type 다음 형식으로 변환할 수 있음
Byte SByte
SByte Byte, UInt16, UInt32, UInt64
Int16 Byte, SByte, UInt16
UInt16 Byte, SByte, Int16
Int32 Byte, SByte, Int16, UInt16,UInt32
UInt32 Byte, SByte, Int16, UInt16, Int32
Int64 Byte, SByte, Int16, UInt16, Int32,UInt32,UInt64
UInt64 Byte, SByte, Int16, UInt16, Int32, UInt32, Int64
Decimal Byte, SByte, Int16, UInt16, Int32, UInt32, Int64, UInt64
Single Byte, SByte, Int16, UInt16, Int32, UInt32, Int64, UInt64
Double Byte, SByte, Int16, UInt16, Int32, UInt32, Int64, UInt64

참고 항목