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.000은 456으로 변환되었습니다. 즉, 소수점 이하 값은 반올림 없이 단순히 버려집니다.
예제 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.678이 35가 아닌 34로 변환되는 것에 유의해야 합니다. 만약 반올림 처리가 필요하다면 Math.Round()를 먼저 적용한 후 변환하는 것이 좋습니다. 또한, 변환 대상 값이 64비트 정수의 표현 범위(long.MinValue ~ long.MaxValue)를 벗어나면 OverflowException이 발생하므로, 큰 값을 다룰 때는 범위 검사를 함께 수행하는 것이 안전합니다.