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

C# Math.Round() 메서드 완벽 정리: 반올림 사용법과 예제 코드

Math.Round() 메서드란?

C#의 Math.Round() 메서드는 숫자 값을 가장 가까운 정수로 반올림하거나, 지정한 소수 자릿수까지 반올림할 때 사용하는 System 네임스페이스의 수학 유틸리티입니다. Double과 Decimal 두 가지 숫자 형식을 모두 지원하며, 다양한 매개변수 조합으로 여러 오버로드가 제공됩니다.

참고로 Math.Round()는 기본적으로 '은행가 반올림(Banker's Rounding)' 방식을 따르므로, 중간값(예: 0.5)이 나오면 가장 가까운 짝수 쪽으로 반올림됩니다. 일반적인 사사오입 방식을 원한다면 MidpointRounding.AwayFromZero 옵션을 함께 사용하면 됩니다.

Math.Round()의 오버로드 종류

Math.Round() 메서드는 아래와 같이 8가지 형태로 오버로드되어 있습니다.

Math.Round(Double)
Math.Round(Double, Int32)
Math.Round(Double, Int32, MidpointRounding)
Math.Round(Double, MidpointRounding)
Math.Round(Decimal)
Math.Round(Decimal, Int32)
Math.Round(Decimal, Int32, MidpointRounding)
Math.Round(Decimal, MidpointRounding)
  • Double / Decimal 단독 사용: 소수점 첫째 자리에서 가장 가까운 정수로 반올림합니다.
  • Int32 매개변수 추가: 소수점 이하 몇 번째 자리까지 남길지 지정합니다.
  • MidpointRounding 추가: 중간값 처리 방식을 직접 선택할 수 있습니다.

예제 1: Math.Round(Decimal) 사용하기

다음은 Decimal 값을 Math.Round()로 반올림하는 기본 예제입니다.

using System;
public class Demo {
    public static void Main(){
        Decimal val1 = 78.12m;
        Decimal val2 = 30.675m;
        Console.WriteLine("Decimal Value = " + val1);
        Console.WriteLine("Rounded value = " + Math.Round(val1));
        Console.WriteLine("Decimal Value = " + val2);
        Console.WriteLine("Rounded value = " + Math.Round(val2));
    }
}

실행 결과

위 코드를 실행하면 다음과 같은 출력을 확인할 수 있습니다.

Decimal Value = 78.12
Rounded value = 78
Decimal Value = 30.675
Rounded value = 31

78.12는 소수 첫째 자리가 1이므로 78로 내림되고, 30.675는 소수 첫째 자리가 6 이상이므로 31로 올림된 것을 볼 수 있습니다.

예제 2: Math.Round(Double) 사용하기

이번에는 Double 형식의 값을 반올림하는 예제입니다.

using System;
public class Demo {
    public static void Main(){
        Double val1 = 23.10;
        Double val2 = 90.98;
        Console.WriteLine("Double Value = " + val1);
        Console.WriteLine("Rounded value = " + Math.Round(val1));
        Console.WriteLine("Double Value = " + val2);
        Console.WriteLine("Rounded value = " + Math.Round(val2));
    }
}

실행 결과

코드 실행 결과는 다음과 같습니다.

Double Value = 23.1
Rounded value = 23
Double Value = 90.98
Rounded value = 91

23.10은 소수 첫째 자리가 1이라 23으로 반올림되었고, 90.98은 소수 첫째 자리가 9라 91로 반올림되었습니다.

정리

Math.Round() 메서드는 Double과 Decimal 형식을 지원하며, 필요에 따라 소수 자릿수 지정과 MidpointRounding 옵션을 조합해 세밀한 반올림 제어가 가능합니다. 금액 계산처럼 정확한 소수 처리가 중요한 경우에는 Decimal 형식과 함께 사용하는 것이 좋습니다.