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

C# Math.Floor() 메서드 – 소수점 내림 처리 방법 총정리

C#의 Math.Floor() 메서드는 지정된 숫자보다 작거나 같은 정수 중 가장 큰 값을 반환하는 메서드입니다. 쉽게 말해 소수점 이하를 '내림'하여 정수 값을 얻을 때 사용합니다. 특히 음수의 경우 단순히 소수점을 잘라내는 것이 아니라, 항상 더 작은 정수 방향(음의 무한대 방향)으로 내려간다는 점이 중요한 특징입니다.

구문(Syntax)

public static decimal Floor (decimal val);
public static double Floor (double val);

첫 번째 구문에서 매개변수 valdecimal 형식의 숫자이며, 두 번째 구문에서 valdouble 형식의 숫자입니다. 두 오버로드 모두 입력값을 내림한 결과를 동일한 자료형으로 반환합니다.

예제 1 – decimal 값에 적용하기

using System;
public class Demo {
   public static void Main(){
      decimal val1 = 7.10M;
      decimal val2 = -79.89M;
      Console.WriteLine("Result = " + Math.Floor(val1));
      Console.WriteLine("Result = " + Math.Floor(val2));
   }
}

출력 결과

Result = 7
Result = -80

실행 결과를 보면 양수인 7.10M은 7로 내림되었고, 음수인 -79.89M은 -79가 아닌 -80으로 내림된 것을 확인할 수 있습니다. 이처럼 Math.Floor()는 음수일 때 0에서 멀어지는 방향으로 동작한다는 점에 주의해야 합니다.

예제 2 – double 값에 적용하기

using System;
public class Demo {
   public static void Main(){
      double val1 = 8.9;
      double val2 = 88.10;
      double val3 = -31.98;
      Console.WriteLine("Result = " + Math.Floor(val1));
      Console.WriteLine("Result = " + Math.Floor(val2));
      Console.WriteLine("Result = " + Math.Floor(val3));
   }
}

출력 결과

Result = 8
Result = 88
Result = -32

double 형식에서도 동일하게 동작합니다. 8.9는 8로, 88.10은 88로 내림되며, 음수인 -31.98은 -31이 아닌 -32가 반환됩니다.

참고 – 유사한 수학 메서드와의 차이점

  • Math.Floor(): 항상 아래 방향(음의 무한대)으로 내림합니다. (-31.98 → -32)
  • Math.Ceiling(): 항상 위 방향(양의 무한대)으로 올림합니다. (-31.98 → -31)
  • Math.Truncate(): 소수점 이하를 단순히 제거하며 0 방향으로 동작합니다. (-31.98 → -31)
  • Math.Round(): 일반적인 반올림 규칙에 따라 가장 가까운 정수로 처리합니다.

금액 계산, 페이지 나누기, 좌표 변환 등에서 소수점 처리 로직을 설계할 때는 이 네 가지 메서드의 동작 차이를 정확히 이해하고 상황에 맞는 메서드를 선택하는 것이 좋습니다.