Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C#에서 Decimal을 32비트 부호 없는 정수로 변환하는 방법

C#에서 지정된 Decimal 값을 그에 상응하는 32비트 부호 없는 정수(uint)로 변환하려면 Decimal.ToUInt32() 메서드를 사용합니다.

이 메서드는 Decimal 값의 소수점 이하 자릿수를 버리고(절삭), 0부터 4,294,967,295 범위 내의 부호 없는 32비트 정수를 반환합니다. 만약 값이 이 범위를 벗어나거나 음수일 경우 OverflowException이 발생하므로 주의해야 합니다.

예제 1

다음은 소수점 이하가 있는 작은 Decimal 값을 변환하는 예제입니다.

using System;
public class Demo {
   public static void Main() {
      Decimal val = 0.001m;
      Console.WriteLine("Decimal 값 = " + val);
      uint res = Decimal.ToUInt32(val);
      Console.WriteLine("32비트 부호 없는 정수 = " + res);
   }
}

출력 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

Decimal 값 = 0.001
32비트 부호 없는 정수 = 0

0.001은 소수점 이하가 잘려나가면서 0으로 변환된 것을 확인할 수 있습니다.

예제 2

이번에는 정수부와 소수부를 모두 가진 더 큰 값을 변환해 보겠습니다.

using System;
public class Demo {
   public static void Main() {
      Decimal val = 67.487m;
      Console.WriteLine("Decimal 값 = " + val);
      uint res = Decimal.ToUInt32(val);
      Console.WriteLine("32비트 부호 없는 정수 = " + res);
   }
}

출력 결과

실행 결과는 다음과 같습니다.

Decimal 값 = 67.487
32비트 부호 없는 정수 = 67

결과에서 볼 수 있듯이 Decimal.ToUInt32()는 반올림이 아닌 절삭(truncation) 방식으로 동작하기 때문에 67.487이 68이 아닌 67으로 변환됩니다. 따라서 반올림 처리가 필요하다면 Math.Round() 등을 사용한 후 변환하는 것이 좋습니다.