명시적 숫자 변환 표(C# 참조)
업데이트: 2007년 11월
숫자 형식 간에 암시적 변환이 없는 경우, 임의의 숫자 형식을 다른 숫자 형식으로 변환하기 위해 캐스트 식을 사용하여 명시적 숫자 변환을 수행합니다. 다음 표에서는 이러한 변환을 보여 줍니다.
변환 전 |
변환 후 |
---|---|
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 |
설명
명시적 숫자 변환으로 정밀도가 손실되거나 예외가 throw될 수 있습니다.
decimal 값을 정수 계열 형식으로 변환할 경우 이 값은 0에 가장 가까운 정수 계열 값으로 반올림됩니다. 결과로 나타난 정수 계열 값이 대상 형식의 범위를 초과하는 경우 OverflowException이 throw됩니다.
double 또는 float 값을 정수 계열 형식으로 변환하면 값이 잘립니다. 결과 정수 계열 값이 대상 값의 범위를 벗어나는 경우 오버플로 검사 컨텍스트에 따라 결과가 다릅니다. 검사된 컨텍스트에서는 OverflowException이 throw되지만 검사되지 않은 컨텍스트에서는 결과가 대상 형식의 지정되지 않은 값입니다.
double을 float로 변환하는 경우 double 값은 가장 근사치의 float 값으로 반올림됩니다. double 값이 너무 작거나 커서 대상 형식에 맞지 않는 경우 결과는 0이 되거나 무한대가 됩니다.
float 또는 double을 decimal로 변환하는 경우 소스 값은 decimal 형식으로 변환되며 필요한 경우 28번째 소수 자리수 아래는 가장 가까운 수로 반올림됩니다. 원본 값의 값에 따라 다음과 같은 결과가 발생할 수 있습니다.
원본 값이 너무 작아 decimal로 나타낼 수 없는 경우 결과는 0이 됩니다.
원본 값이 NaN(숫자 아님) 또는 무한대이거나 너무 커서 decimal로 나타낼 수 없는 경우 OverflowException이 throw됩니다.
decimal을 float 또는 double로 변환하는 경우 decimal 값은 가장 가까운 double 또는 float 값으로 반올림됩니다.
명시적 변환에 대한 자세한 내용은 C# 언어 사양의 6.2 명시적 변환을 참조하십시오. 사양에 액세스하는 방법에 대한 자세한 내용은 C# 언어 사양을 참조하십시오.