C#에서 32비트 부호 없는 정수(uint)를 10진수(decimal)로 변환할 때는 별도의 캐스팅 연산자 없이 값만 대입하면 되는 암시적 변환(implicit conversion)이 지원됩니다.
먼저 uint 변수를 선언합니다.
uint val = 342741539;
decimal은 uint가 가질 수 있는 모든 값(0 ~ 4,294,967,295)을 데이터 손실 없이 표현할 수 있기 때문에, 단순히 변수에 대입하기만 하면 컴파일러가 자동으로 형식을 변환해 줍니다.
decimal dec;
// 암시적 변환
dec = val;
전체 예제 코드
using System;
public class Demo {
public static void Main() {
uint val = 342741539;
decimal dec;
// 암시적 변환
dec = val;
Console.WriteLine("Decimal = " + dec);
}
}
실행 결과
Decimal = 342741539
참고 사항
암시적 변환이 가능한 이유는 decimal의 표현 범위와 정밀도가 uint보다 크기 때문입니다. 반대로 decimal을 uint로 변환할 때는 값 손실 가능성이 있으므로 명시적 캐스팅((uint))이 필요합니다.