.NET의 형식 변환표Type Conversion Tables in .NET

확대 변환은 한 형식의 값을 크기가 같거나 더 큰 다른 형식으로 변환할 때 발생합니다.Widening conversion occurs when a value of one type is converted to another type that is of equal or greater size. 축소 변환은 한 형식의 값을 크기가 더 작은 다른 형식의 값으로 변환할 때 발생합니다.A narrowing conversion occurs when a value of one type is converted to a value of another type that is of a smaller size. 이 항목의 표에서는 두 가지 유형의 변환에서 모두 나타나는 동작을 설명합니다.The tables in this topic illustrate the behaviors exhibited by both types of conversions.

확대 변환Widening Conversions

다음 표에서는 정보 손실 없이 수행할 수 있는 확대 변환에 대해 설명합니다.The following table describes the widening conversions that can be performed without the loss of information.

형식Type 데이터 손실 없이 다음 형식으로 변환할 수 있음Can be converted without data loss to
Byte UInt16, Int16, UInt32, Int32, UInt64, Int64, Single, Double, DecimalUInt16, Int16, UInt32, Int32, UInt64, Int64, Single, Double, Decimal
SByte Int16, Int32, Int64, Single, Double, DecimalInt16, Int32, Int64, Single, Double, Decimal
Int16 Int32, Int64, Single, Double, DecimalInt32, Int64, Single, Double, Decimal
UInt16 UInt32, Int32, UInt64, Int64, Single, Double, DecimalUInt32, Int32, UInt64, Int64, Single, Double, Decimal
Char UInt16, UInt32, Int32, UInt64, Int64, Single, Double, DecimalUInt16, UInt32, Int32, UInt64, Int64, Single, Double, Decimal
Int32 Int64, Double, DecimalInt64, Double, Decimal
UInt32 Int64, UInt64, Double, DecimalInt64, UInt64, Double, Decimal
Int64 Decimal
UInt64 Decimal
Single Double

Single 또는 Double로의 일부 확대 변환에서는 정밀도 손실이 발생할 수 있습니다.Some widening conversions to Single or Double can cause a loss of precision. 다음 표에서는 때때로 정보 손실이 발생할 수 있는 확대 변환에 대해 설명합니다.The following table describes the widening conversions that sometimes result in a loss of information.

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

축소 변환Narrowing Conversions

Single 또는 Double로의 축소 변환에서는 정보 손실이 발생할 수 있습니다.A narrowing conversion to Single or Double can cause a loss of information. 대상 형식이 소스 크기를 제대로 표시할 수 없는 경우 결과 형식이 상수 PositiveInfinity 또는 NegativeInfinity로 설정됩니다.If the target type cannot properly express the magnitude of the source, the resulting type is set to the constant PositiveInfinity or NegativeInfinity. PositiveInfinity는 양수를 0으로 나눈 결과이며 Single 또는 Double 값이 MaxValue 필드 값을 초과하는 경우에도 반환됩니다.PositiveInfinity results from dividing a positive number by zero and is also returned when the value of a Single or Double exceeds the value of the MaxValue field. NegativeInfinity는 음수를 0으로 나눈 결과이며 Single 또는 Double 값이 MinValue 필드 값보다 작은 경우에도 반환됩니다.NegativeInfinity results from dividing a negative number by zero and is also returned when the value of a Single or Double falls below the value of the MinValue field. Double에서 Single로 변환하면 PositiveInfinity 또는 NegativeInfinity가 발생할 수 있습니다.A conversion from a Double to a Single might result in PositiveInfinity or NegativeInfinity.

축소 변환 시 다른 데이터 형식에 대한 정보 손실도 발생할 수 있습니다.A narrowing conversion can also result in a loss of information for other data types. 그러나 변환 중인 형식의 값이 대상 형식의 MaxValueMinValue 필드에 지정된 범위를 벗어나면 OverflowException이 throw되며, 런타임에서 변환을 검사하여 대상 형식의 값이 해당 MaxValue 또는 MinValue를 초과하지 않는지 확인합니다.However, an OverflowException is thrown if the value of a type that is being converted falls outside of the range specified by the target type's MaxValue and MinValue fields, and the conversion is checked by the runtime to ensure that the value of the target type does not exceed its MaxValue or MinValue. System.Convert 클래스로 수행하는 변환은 항상 이런 방식으로 검사됩니다.Conversions that are performed with the System.Convert class are always checked in this manner.

다음 표에서는 System.Convert 사용 시 OverflowException을 throw하는 변환 또는 변환 중인 형식의 값이 정의된 결과 형식 범위를 벗어나는지 확인한 모든 변환을 보여줍니다.The following table lists conversions that throw an OverflowException using System.Convert or any checked conversion if the value of the type being converted is outside the defined range of the resulting type.

형식Type 다음 형식으로 변환할 수 있음Can be converted to
Byte SByte
SByte Byte, UInt16, UInt32, UInt64Byte, UInt16, UInt32, UInt64
Int16 Byte, SByte, UInt16Byte, SByte, UInt16
UInt16 Byte, SByte, Int16Byte, SByte, Int16
Int32 Byte, SByte, Int16, UInt16,UInt32Byte, SByte, Int16, UInt16,UInt32
UInt32 Byte, SByte, Int16, UInt16, Int32Byte, SByte, Int16, UInt16, Int32
Int64 Byte, SByte, Int16, UInt16, Int32,UInt32,UInt64Byte, SByte, Int16, UInt16, Int32,UInt32,UInt64
UInt64 Byte, SByte, Int16, UInt16, Int32, UInt32, Int64Byte, SByte, Int16, UInt16, Int32, UInt32, Int64
Decimal Byte, SByte, Int16, UInt16, Int32, UInt32, Int64, UInt64Byte, SByte, Int16, UInt16, Int32, UInt32, Int64, UInt64
Single Byte, SByte, Int16, UInt16, Int32, UInt32, Int64, UInt64Byte, SByte, Int16, UInt16, Int32, UInt32, Int64, UInt64
Double Byte, SByte, Int16, UInt16, Int32, UInt32, Int64, UInt64Byte, SByte, Int16, UInt16, Int32, UInt32, Int64, UInt64

참고 항목See also