C#의 Decimal.Floor() 메서드는 지정된 Decimal 숫자를 음의 무한대(-∞) 방향으로 가장 가까운 정수로 내림하는 메서드입니다. 즉, 소수점 이하를 버리고 원래 값보다 작거나 같은 최대 정수를 반환합니다.
문법(Syntax)
Decimal.Floor() 메서드의 기본 문법은 다음과 같습니다.
public static decimal Floor (decimal val);
매개변수 val은 내림할 대상 값입니다. 이 메서드는 정적(static) 메서드이므로 객체 생성 없이 Decimal.Floor(val) 형태로 바로 호출할 수 있습니다.
예제 1: 양수에 Floor() 적용하기
먼저 양수 Decimal 값에 Decimal.Floor() 메서드를 적용하는 예제를 살펴보겠습니다.
using System;
public class Demo {
public static void Main(){
Decimal val1 = 25.25m;
Decimal val2 = 11.85m;
Console.WriteLine("Decimal 1 = "+val1);
Console.WriteLine("Decimal 2 = "+val2);
Console.WriteLine("Floor (val1) = "+Decimal.Floor(val1));
Console.WriteLine("Floor (val2) = "+Decimal.Floor(val2));
}
}출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Decimal 1 = 25.25 Decimal 2 = 11.85 Floor (val1) = 25 Floor (val2) = 11
양수의 경우 단순히 소수점 이하가 버려지는 것처럼 동작합니다. 25.25는 25로, 11.85는 11로 내림되어 반환됩니다.
예제 2: 음수에 Floor() 적용하기
Floor() 메서드의 진짜 특징은 음수를 다룰 때 드러납니다. 다음 예제를 통해 확인해 보겠습니다.
using System;
public class Demo {
public static void Main(){
Decimal val1 = -25.25m;
Decimal val2 = -11.85m;
Console.WriteLine("Decimal 1 = "+val1);
Console.WriteLine("Decimal 2 = "+val2);
Console.WriteLine("Floor (val1) = "+Decimal.Floor(val1));
Console.WriteLine("Floor (val2) = "+Decimal.Floor(val2));
}
}출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Decimal 1 = -25.25 Decimal 2 = -11.85 Floor (val1) = -26 Floor (val2) = -12
음수에서는 특히 주의가 필요합니다. -25.25의 결과가 -25가 아니라 -26으로 나오는 이유는, Floor()가 항상 "음의 무한대 방향", 즉 더 작은 쪽으로 내림하기 때문입니다. 이는 단순히 소수점을 잘라내는 Decimal.Truncate()(-25.25 → -25)와의 중요한 차이점이므로, 개발 시 의도에 맞는 메서드를 선택하는 것이 좋습니다.