C#의 Math.Sign() 메서드는 숫자가 양수인지, 음수인지, 아니면 0인지를 나타내는 정수 값을 반환하는 메서드입니다. 이 메서드는 다음과 같은 규칙에 따라 결과를 반환합니다.
- 입력 값이 0보다 크면 →
1반환 - 입력 값이 0이면 →
0반환 - 입력 값이 0보다 작으면 →
-1반환
Math.Sign() 메서드 오버로드
Math.Sign() 메서드는 다양한 숫자 형식을 지원하기 위해 여러 오버로드 버전을 제공합니다.
Math.Sign(Int16) Math.Sign(Int32) Math.Sign(Int64) Math.Sign(SByte) Math.Sign(Single) Math.Sign(Decimal) Math.Sign(Double)
참고로 Single과 Double 형식에 NaN(Not a Number) 값을 전달하면 ArithmeticException 예외가 발생하므로 주의해야 합니다.
예제 1: 정수 계열 형식에서 Math.Sign() 사용하기
다음은 short, int, long 형식의 값에 대해 Math.Sign() 메서드를 활용하는 예제입니다.
using System;
public class Demo {
public static void Main(){
short val1 = 1;
int val2 = 20;
long val3 = -3545465777;
Console.WriteLine("Short Value = " + val1);
Console.WriteLine("Sign (Short Value) = " + getSign(Math.Sign(val1)));
Console.WriteLine("Int32 value = " + val2);
Console.WriteLine("Sign (Int32 Value) = " + getSign(Math.Sign(val2)));
Console.WriteLine("Long value = " + val3);
Console.WriteLine("Sign (Long Value) = " + getSign(Math.Sign(val3)));
}
public static String getSign(int compare){
if (compare == 0)
return "Equal to zero!";
else if (compare < 0)
return "Less than zero!";
else
return "Greater than zero!";
}
}실행 결과
위 코드를 실행하면 다음과 같은 출력 결과를 확인할 수 있습니다.
Short Value = 1 Sign (Short Value) = Greater than zero! Int32 value = 20 Sign (Int32 Value) = Greater than zero! Long value = -3545465777 Sign (Long Value) = Less than zero!
예제 2: Decimal 및 Double 형식에서 Math.Sign() 사용하기
이번에는 Decimal과 Double 형식의 값에 대해 Math.Sign() 메서드를 적용해 보겠습니다.
using System;
public class Demo {
public static void Main(){
Decimal val1 = 20m;
Double val2 = -35.252d;
Console.WriteLine("Decimal Value = " + val1);
Console.WriteLine("Sign (Decimal Value) = " + getSign(Math.Sign(val1)));
Console.WriteLine("Double value = " + val2);
Console.WriteLine("Sign (Double Value) = " + getSign(Math.Sign(val2)));
}
public static String getSign(int compare){
if (compare == 0)
return "Equal to zero!";
else if (compare < 0)
return "Less than zero!";
else
return "Greater than zero!";
}
}실행 결과
위 코드를 실행하면 다음과 같은 출력 결과가 나타납니다.
Decimal Value = 20 Sign (Decimal Value) = Greater than zero! Double value = -35.252 Sign (Double Value) = Less than zero!
정리
C#의 Math.Sign() 메서드는 숫자의 부호를 빠르고 간편하게 판별할 수 있는 유용한 도구입니다. 조건문 없이도 값이 양수인지 음수인지 확인할 수 있어 코드의 가독성을 높이는 데 큰 도움이 됩니다. 다양한 숫자 형식(Int16, Int32, Int64, SByte, Single, Decimal, Double)을 지원하므로 상황에 맞게 활용해 보시기 바랍니다.