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

C# Double.CompareTo() 메서드 완벽 정리 – 예제 코드로 쉽게 배우기

C#의 Double.CompareTo() 메서드는 현재 double 인스턴스를 지정된 개체 또는 Double 값과 비교한 후, 두 값의 대소 관계를 나타내는 정수를 반환합니다. 이 메서드를 활용하면 두 배정밀도 부동 소수점 숫자가 서로 같은지, 아니면 어느 쪽이 더 큰지 손쉽게 판별할 수 있습니다.

구문(Syntax)

Double.CompareTo() 메서드에는 두 가지 오버로드가 있습니다.

public int CompareTo (double val);
public int CompareTo (object val);

첫 번째 구문의 매개변수 val은 비교 대상이 되는 배정밀도 부동 소수점 숫자(double)이며, 두 번째 구문의 val은 비교할 개체(object)입니다.

반환 값

  • 현재 인스턴스가 지정된 값보다 작으면: 0 미만의 정수
  • 현재 인스턴스가 지정된 값과 같으면: 0
  • 현재 인스턴스가 지정된 값보다 크면: 0보다 큰 정수

예제 1 – double 값끼리 비교하기

아래 예제에서는 두 개의 double 변수를 CompareTo() 메서드로 비교해 봅니다.

using System;
public class Demo {
   public static void Main() {
      double d1 = 150d;
      double d2 = 150d;
      Console.WriteLine("Double1 Value = "+d1);
      Console.WriteLine("Double2 Value = "+d2);
      Console.WriteLine("Are both the double values equal? = "+d1.CompareTo(d2));
   }
}

실행 결과

위 프로그램을 실행하면 다음과 같은 출력이 나타납니다.

Double1 Value = 150
Double2 Value = 150
Are both the double values equal? = 0

두 값이 모두 150으로 동일하기 때문에 CompareTo() 메서드는 0을 반환합니다.

예제 2 – double 값과 object 비교하기

이번에는 double 값을 object 타입의 값과 비교하는 두 번째 오버로드를 사용해 보겠습니다.

using System;
public class Demo {
   public static void Main() {
      double d1 = 20d;
      object d2 = 20d;
      Console.WriteLine("Double1 Value = "+d1);
      Console.WriteLine("Double2 Value = "+d2);
      Console.WriteLine("Are both the double values equal? = "+d1.CompareTo(d2));
   }
}

실행 결과

Double1 Value = 20
Double2 Value = 20
Are both the double values equal? = 0

double 타입과 object 타입을 비교했지만 두 값이 20으로 같으므로 역시 0이 반환됩니다.

정리

Double.CompareTo() 메서드는 double 값의 대소 비교가 필요한 정렬(Sort) 로직이나 조건 분기 처리에 유용하게 활용됩니다. 반환 값이 음수인지, 0인지, 양수인지에 따라 비교 결과를 명확하게 판단할 수 있다는 점을 기억해 두세요.