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

C# Decimal.ToInt64() 메서드 – Decimal 값을 64비트 부호 있는 정수로 변환하기

C#의 Decimal.ToInt64() 메서드는 지정된 Decimal(10진수) 값을 그에 해당하는 64비트 부호 있는 정수(long)로 변환하는 데 사용됩니다. 소수점 이하 자릿수는 잘리고, 정수 부분만 결과로 반환된다는 점을 기억해 두면 좋습니다.

문법(Syntax)

Decimal.ToInt64() 메서드의 기본 문법은 다음과 같습니다.

public static long ToInt64 (decimal val);

여기서 매개변수 val은 64비트 부호 있는 정수로 변환할 decimal 숫자를 의미합니다.

예제 1

다음 예제를 통해 Decimal.ToInt64() 메서드의 실제 동작 방식을 살펴보겠습니다.

using System;
public class Demo {
   public static void Main(){
      Decimal val1 = -567.7989m;
      Decimal val2 = 456.000m;
      Console.WriteLine("Decimal 1 = "+val1);
      Console.WriteLine("Decimal 2 = "+val2);
      long res1 = Decimal.ToInt64(val1);
      long res2 = Decimal.ToInt64(val2);
      Console.WriteLine("64비트 부호 있는 정수 (value1) = "+res1);
      Console.WriteLine("64비트 부호 있는 정수 (value2) = "+res2);
   }
}

출력 결과

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

Decimal 1 = -567.7989
Decimal 2 = 456.000
64비트 부호 있는 정수 (value1) = -567
64비트 부호 있는 정수 (value2) = 456

출력 결과에서 확인할 수 있듯이, 음수인 -567.7989-567로, 소수부가 없는 456.000456으로 변환되었습니다. 즉, 소수점 이하 값은 반올림 없이 단순히 버려집니다.

예제 2

이번에는 다른 값들을 사용한 추가 예제를 살펴보겠습니다.

using System;
public class Demo {
   public static void Main(){
      Decimal val1 = 1.00m;
      Decimal val2 = 34.678m;
      Console.WriteLine("Decimal 1 = "+val1);
      Console.WriteLine("Decimal 2 = "+val2);
      long res1 = Decimal.ToInt64(val1);
      long res2 = Decimal.ToInt64(val2);
      Console.WriteLine("64비트 부호 있는 정수 (value1) = "+res1);
      Console.WriteLine("64비트 부호 있는 정수 (value2) = "+res2);
   }
}

출력 결과

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

Decimal 1 = 1.00
Decimal 2 = 34.678
64비트 부호 있는 정수 (value1) = 1
64비트 부호 있는 정수 (value2) = 34

정리 및 주의 사항

Decimal.ToInt64() 메서드는 소수점 이하를 절사(truncation)하여 정수 부분만 반환합니다. 따라서 34.67835가 아닌 34로 변환되는 것에 유의해야 합니다. 만약 반올림 처리가 필요하다면 Math.Round()를 먼저 적용한 후 변환하는 것이 좋습니다. 또한, 변환 대상 값이 64비트 정수의 표현 범위(long.MinValue ~ long.MaxValue)를 벗어나면 OverflowException이 발생하므로, 큰 값을 다룰 때는 범위 검사를 함께 수행하는 것이 안전합니다.