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

C# Decimal.Ceiling() 메서드 – decimal 값 소수점 올림 처리하기

C#의 Decimal.Ceiling() 메서드는 지정된 decimal(10진수) 값보다 크거나 같은 정수 중 가장 작은 값을 반환합니다. 쉽게 말해 소수점 이하를 무조건 올림하는 메서드로, Math.Ceiling()과 동일하게 동작하지만 입력과 반환 모두 decimal 형식이라는 점이 특징입니다.

구문

Decimal.Ceiling() 메서드의 기본 구문은 다음과 같습니다.

public static decimal Ceiling (decimal val);

매개변수 val에는 올림 처리할 decimal 숫자가 전달되며, 메서드는 해당 값보다 크거나 같은 최소 정수를 decimal 형식으로 반환합니다.

예제 1 – 양수 올림

다음은 Decimal.Ceiling() 메서드를 사용해 양수를 올림 처리하는 예제입니다.

using System;
public class Demo {
    public static void Main(){
        Decimal val1 = 12.85m;
        Decimal val2 = 3.45m;
        Console.WriteLine("Decimal 1 = "+val1);
        Console.WriteLine("Decimal 2 = "+val2);
        Console.WriteLine("Ceiling (val1) = "+Decimal.Ceiling(val1));
        Console.WriteLine("Ceiling (val2) = "+Decimal.Ceiling(val2));
    }
}

실행 결과

Decimal 1 = 12.85
Decimal 2 = 3.45
Ceiling (val1) = 13
Ceiling (val2) = 4

12.85는 13으로, 3.45는 4로 각각 올림된 것을 확인할 수 있습니다. 소수점 이하 값의 크기와 관계없이 무조건 위쪽 정수로 올라간다는 점이 핵심입니다.

예제 2 – 음수 올림

이번에는 음수에 적용한 예제입니다. 음수의 경우에도 "더 큰 정수" 방향, 즉 양의 무한대 방향으로 올림됩니다.

using System;
public class Demo {
    public static void Main(){
        Decimal val1 = -10.85m;
        Decimal val2 = -33.45m;
        Console.WriteLine("Decimal 1 = "+val1);
        Console.WriteLine("Decimal 2 = "+val2);
        Console.WriteLine("Ceiling (val1) = "+Decimal.Ceiling(val1));
        Console.WriteLine("Ceiling (val2) = "+Decimal.Ceiling(val2));
    }
}

실행 결과

Decimal 1 = -10.85
Decimal 2 = -33.45
Ceiling (val1) = -10
Ceiling (val2) = -33

-10.85는 -10으로, -33.45는 -33으로 변환되었습니다. 직관적으로 "절반을 버린다"고 느낄 수 있지만, 실제로는 수직선에서 오른쪽(양의 방향)으로 가장 가까운 정수를 찾는 것이므로 음수에서도 일관된 규칙이 적용됩니다.

정리

Decimal.Ceiling()은 항상 양의 무한대 방향으로 올림하며, 반올림(Math.Round)이나 내림(Math.Floor), 절사(Math.Truncate)와는 결과가 다르다는 점에 유의해야 합니다. 금액 계산처럼 정확한 10진 연산이 필요한 상황에서 decimal 형식과 함께 이 메서드를 활용하면 부동소수점 오차 없이 안전하게 올림 처리를 할 수 있습니다.