C#에서 Math.Abs() 메서드는 지정된 숫자의 절댓값(absolute value)을 반환하는 데 사용됩니다. 이 메서드는 decimal, double, short(16비트 부호 있는 정수), int, long, sbyte, float 등 다양한 숫자 형식에 대해 오버로드되어 있어, 어떤 숫자 형식이든 절댓값을 손쉽게 계산할 수 있습니다.
절댓값이란 수직선 위에서 해당 숫자가 원점(0)으로부터 떨어진 거리를 의미하므로, 음수가 입력되면 양수로 변환되고 양수나 0이 입력되면 그대로 반환됩니다.
예제 1: double 형식의 절댓값 구하기
다음 예제는 Math.Abs() 메서드를 사용하여 double 형식 숫자의 절댓값을 반환하는 방법을 보여줍니다.
using System;
class Demo {
public static void Main(){
Double val1 = 30.40;
Double val2 = Double.MinValue;
Double val3 = Double.MaxValue;
Console.WriteLine("Absolute value of {0} : {1}", val1, Math.Abs(val1));
Console.WriteLine("Absolute value of {0} : {1}", val2, Math.Abs(val2));
Console.WriteLine("Absolute value of {0} : {1}", val3, Math.Abs(val3));
}
}출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Absolute value of 30.4 : 30.4 Absolute value of -1.79769313486232E+308 : 1.79769313486232E+308 Absolute value of 1.79769313486232E+308 : 1.79769313486232E+308
출력 결과를 보면 음수인 Double.MinValue의 절댓값은 양수로 변환되어 반환되며, 이미 양수인 값은 그대로 유지되는 것을 확인할 수 있습니다.
예제 2: 16비트 부호 있는 정수(short)의 절댓값 구하기
이번에는 Math.Abs() 메서드를 사용하여 16비트 부호 있는 정수(short)의 절댓값을 반환하는 예제를 살펴보겠습니다.
using System;
class Demo {
public static void Main(){
short val1 = -300;
short val2 = Int16.MaxValue;
short val3 = 0;
Console.WriteLine("Absolute value of {0} : {1}", val1, Math.Abs(val1));
Console.WriteLine("Absolute value of {0} : {1}", val2, Math.Abs(val2));
Console.WriteLine("Absolute value of {0} : {1}", val3, Math.Abs(val3));
}
}출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Absolute value of -300 : 300 Absolute value of 32767 : 32767 Absolute value of 0 : 0
주의 사항
정수 형식(int, long, short, sbyte)의 경우, 해당 형식이 표현할 수 있는 최솟값(예: Int32.MinValue)을 Math.Abs()에 전달하면 양수로 표현할 수 없기 때문에 System.OverflowException이 발생합니다. 반면 double이나 decimal처럼 넓은 범위를 지원하는 형식에서는 이러한 제약이 상대적으로 적습니다. 따라서 실무에서는 입력 값의 범위를 항상 고려하여 사용하는 것이 좋습니다.