.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
가 발생할 수 있습니다.
축소 변환 시 다른 데이터 형식에 대한 정보 손실도 발생할 수 있습니다. 그러나 변환 중인 형식의 값이 대상 형식의 MaxValue
및 MinValue
필드에 지정된 범위를 벗어나면 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 |
참고 항목
.NET