C#에서 Decimal.ToUInt64() 메서드를 사용하면 지정된 Decimal 값을 그에 해당하는 64비트 부호 없는 정수(ulong)로 변환할 수 있습니다.
이 메서드는 소수점 이하 자릿수를 버리고 정수 부분만 반환합니다. 단, 변환하려는 값이 ulong 타입의 범위(0 ~ 18,446,744,073,709,551,615)를 벗어나면 OverflowException이 발생할 수 있으므로 주의해야 합니다.
예제 1
다음은 Decimal 값을 64비트 부호 없는 정수로 변환하는 기본적인 예제입니다.
using System;
public class Demo {
public static void Main() {
Decimal val = 99.29m;
Console.WriteLine("Decimal 값 = " + val);
ulong res = Decimal.ToUInt64(val);
Console.WriteLine("64비트 부호 없는 정수 = " + res);
}
}출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Decimal 값 = 99.29 64비트 부호 없는 정수 = 99
소수점 이하 값인 0.29는 잘리고, 정수 부분인 99만 반환되는 것을 확인할 수 있습니다.
예제 2
이번에는 1보다 작은 소수 값을 변환해 보겠습니다.
using System;
public class Demo {
public static void Main() {
Decimal val = 0.001m;
Console.WriteLine("Decimal 값 = " + val);
ulong res = Decimal.ToUInt64(val);
Console.WriteLine("64비트 부호 없는 정수 = " + res);
}
}출력 결과
실행 결과는 다음과 같습니다.
Decimal 값 = 0.001 64비트 부호 없는 정수 = 0
0.001처럼 정수 부분이 없는 값은 변환 시 0이 됩니다. 또한 Decimal.ToUInt64()는 음수 값을 처리할 수 없으므로, 음수가 입력될 가능성이 있다면 사전에 값의 범위를 검사하는 것이 좋습니다.