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

C# Math.Sign() 메서드 완벽 정리: 숫자의 부호를 손쉽게 판별하는 방법

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)

참고로 SingleDouble 형식에 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)을 지원하므로 상황에 맞게 활용해 보시기 바랍니다.