다음을 통해 공유


명시적 숫자 변환 표(C# 참조)

숫자 형식 간에 암시적 변환이 없는 경우, 임의의 숫자 형식을 다른 숫자 형식으로 변환하기 위해 캐스트 식을 사용하여 명시적 숫자 변환을 수행합니다. 다음 표에서는 이러한 변환을 보여 줍니다.

From

To

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

설명

  • 명시적 숫자 변환으로 정밀도가 손실되거나 예외가 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# 언어 사양의 명시적 변환을 참조하십시오. 사양에 액세스하는 방법에 대한 자세한 내용은 C# 언어 사양을 참조하십시오.

참고 항목

참조

캐스팅 및 형식 변환(C# 프로그래밍 가이드)

() 연산자(C# 참조)

정수 계열 형식 표(C# 참조)

기본 제공 형식 표(C# 참조)

암시적 숫자 변환 표(C# 참조)

개념

C# 프로그래밍 가이드

기타 리소스

C# 참조