C#에서 int 타입은 32비트 부호 있는 정수, 즉 Int32를 나타냅니다. int 값의 범위는 -2,147,483,648부터 2,147,483,647까지이며, 이 값들은 모두 decimal 타입으로 데이터 손실 없이 표현할 수 있기 때문에 별도의 캐스팅 연산자 없이 자동으로(암시적으로) 변환이 가능합니다.
Int32에서 Decimal로 암시적 변환하기
Int32를 Decimal로 암시적 변환하려면 먼저 int 변수에 값을 설정합니다.
int val = 392;
그다음, decimal 타입의 변수에 해당 값을 그대로 할당하기만 하면 됩니다.
decimal d; d = val;
별도의 명시적 캐스팅 없이 단순 대입만으로 변환이 완료됩니다. 아래는 전체 실행 예제입니다.
예제 코드
using System;
public class Demo {
public static void Main() {
int val = 767;
decimal d;
Console.WriteLine("Int32(정수)에서 Decimal로의 암시적 변환");
d = val;
Console.WriteLine("Decimal : " + d);
}
}출력 결과
Int32(정수)에서 Decimal로의 암시적 변환 Decimal : 767
암시적 변환이 가능한 이유
C# 컴파일러는 변환 과정에서 데이터 손실이나 예외가 발생하지 않는다고 판단되면 암시적 변환을 허용합니다. decimal은 128비트 정밀 숫자 타입으로, int가 가질 수 있는 모든 값을 오차 없이 담을 수 있으므로 int에서 decimal로의 변환은 항상 안전합니다.
반대로 decimal을 int로 변환할 때는 소수점 이하 자릿수가 잘리거나 범위를 초과할 수 있기 때문에 반드시 명시적 캐스팅((int))을 사용해야 한다는 점을 기억해 두세요.