C#의 Decimal.ToUInt64() 메서드는 지정된 Decimal 값을 그에 해당하는 64비트 부호 없는 정수(ulong)로 변환합니다. 소수점 이하 값은 반올림되지 않고 0을 향해 절삭되며, 음수나 UInt64.MaxValue보다 큰 값이 입력되면 OverflowException이 발생합니다.
문법
기본 문법은 다음과 같습니다.
public static ulong ToUInt64 (decimal val);
위 코드에서 val은 64비트 부호 없는 정수로 변환할 decimal 숫자를 의미합니다.
예제 1
Decimal.ToUInt64() 메서드의 기본적인 사용 예제를 살펴보겠습니다.
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() 메서드를 사용할 때는 다음 사항에 유의해야 합니다.
- 변환 대상 값이 음수이면 OverflowException이 발생합니다.
- 값이 UInt64.MaxValue(18,446,744,073,709,551,615)보다 큰 경우에도 예외가 발생합니다.
- 소수점 이하는 반올림되지 않고 항상 0 방향으로 절삭됩니다.