C#의 Decimal.CompareTo() 메서드는 현재 인스턴스를 지정된 개체 또는 다른 Decimal 값과 비교한 후, 두 값의 상대적인 크기를 나타내는 정수를 반환합니다.
반환값의 의미
- 음수: 현재 인스턴스가 매개변수로 전달된 값보다 작은 경우
- 0: 두 값이 같은 경우
- 양수: 현재 인스턴스가 매개변수로 전달된 값보다 큰 경우
구문(Syntex)
Decimal.CompareTo() 메서드의 기본 구문은 다음과 같습니다.
public int CompareTo (decimal value); public int CompareTo (object value);
decimal 타입을 직접 받는 오버로드와, object 타입을 받는 오버로드 두 가지가 제공됩니다.
예제 1: 같은 값 비교하기
아래 예제는 서로 같은 값을 가진 두 Decimal 변수를 CompareTo() 메서드로 비교하는 코드입니다.
using System;
public class Demo {
public static void Main(){
Decimal val1 = 65.15m;
Decimal val2 = 65.15m;
Console.WriteLine("Decimal 1 = "+val1);
Console.WriteLine("Decimal 2 = "+val2);
Console.WriteLine("Comparison Value = "+(val1.CompareTo(val2)));
}
}출력 결과
위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.
Decimal 1 = 65.15 Decimal 2 = 65.15 Comparison Value = 0
두 값이 동일하기 때문에 비교 결과로 0이 반환된 것을 확인할 수 있습니다.
예제 2: object 타입과 비교하기
이번에는 object 타입으로 박싱된 Decimal 값과 비교하는 예제입니다.
using System;
public class Demo {
public static void Main(){
Decimal val1 = 65.15m;
object val2 = (decimal)4.1428600E+2;
Console.WriteLine("Decimal 1 = "+val1);
Console.WriteLine("Decimal 2 = "+val2);
Console.WriteLine("Comparison Value = "+(val1.CompareTo(val2)));
}
}출력 결과
위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.
Decimal 1 = 65.15 Decimal 2 = 414.286 Comparison Value = -1
현재 인스턴스(65.15)가 비교 대상(414.286)보다 작기 때문에 음수인 -1이 반환됩니다.
정리
Decimal.CompareTo() 메서드는 두 10진수 값의 크기 관계를 손쉽게 판단할 수 있는 유용한 도구입니다. 정렬 로직이나 조건 분기 등에서 값의 상대적 크기를 확인해야 할 때 활용할 수 있으며, decimal 타입과 object 타입 두 가지 오버로드를 상황에 맞게 사용하면 됩니다.