C#의 Single.CompareTo() 메서드는 현재 인스턴스를 지정된 개체(object) 또는 다른 Single(float) 인스턴스와 비교하고, 두 값의 크기 관계를 나타내는 정수를 반환합니다.
반환값의 의미는 다음과 같습니다.
- 첫 번째 인스턴스가 두 번째 값보다 작으면 0보다 작은 값을 반환합니다.
- 두 값이 같으면 0을 반환합니다.
- 첫 번째 인스턴스가 두 번째 값보다 크면 0보다 큰 값을 반환합니다.
구문(Syntax)
Single.CompareTo() 메서드는 두 가지 오버로드 형태로 제공됩니다.
public int CompareTo (float val); public int CompareTo (object val);
첫 번째 구문의 val 매개변수는 비교할 단정밀도(single-precision) 부동 소수점 숫자이며, 두 번째 구문의 val은 비교할 개체입니다.
예제 1 – float 값끼리 비교하기
아래 예제에서는 두 개의 float 변수를 CompareTo() 메서드로 비교해 봅니다.
using System;
public class Demo {
public static void Main(){
float f1 = 50.7f;
float f2 = 50.7f;
Console.WriteLine("Value1 = "+f1);
Console.WriteLine("Value2 = "+f2);
Console.WriteLine("Is f1 and f2 equal? = "+f1.CompareTo(f2));
}
}실행 결과
Value1 = 50.7 Value2 = 50.7 Is f1 and f2 equal? = 0
두 값이 동일하므로 CompareTo() 메서드는 0을 반환합니다.
예제 2 – object와 비교하고 조건문으로 결과 처리하기
이번에는 object 타입의 값과 비교한 후, 반환값을 if 문으로 판별하는 예제입니다.
using System;
public class Demo {
public static void Main(){
float f1 = 50.7f;
object f2 = 50.7f;
Console.WriteLine("Value1 = "+f1);
Console.WriteLine("Value2 = "+f2);
int res = f1.CompareTo(f2);
if (res > 0)
Console.WriteLine("f1 > f2");
else if (res < 0)
Console.WriteLine("f1 < f2");
else
Console.WriteLine("f1 = f2");
}
}실행 결과
Value1 = 50.7 Value2 = 50.7 f1 = f2
정리
Single.CompareTo() 메서드는 float 값의 대소 비교를 간편하게 처리할 수 있는 메서드입니다. 반환값이 음수인지, 0인지, 양수인지에 따라 두 값의 크기 관계를 명확하게 판단할 수 있으며, 정렬(sorting) 로직이나 조건 분기에서 유용하게 활용됩니다.