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

한 줄로 구현하는 C 언어 부동 소수점 반올림 함수

이 글에서는 부동 소수점(floating point) 숫자를 반올림할 수 있는 한 줄짜리 C 함수를 작성하는 방법을 알아보겠습니다. 별도의 조건문 없이 삼항 연산자만으로 간결하게 구현할 수 있습니다.

반올림의 기본 원리

C 표준 라이브러리에는 round() 함수가 존재하지만, 직접 구현해야 하는 상황이라면 다음과 같은 간단한 수학적 원리를 활용할 수 있습니다.

  • 반올림할 숫자를 입력받습니다.
  • 숫자가 양수라면 0.5를 더합니다.
  • 숫자가 음수라면 0.5를 뺍니다.
  • 형 변환(typecasting)을 사용하여 부동 소수점 값을 정수로 변환합니다.

정수형으로 형 변환할 때 소수점 이하는 버려지기 때문에, 0.5를 먼저 더하거나 빼면 자연스럽게 반올림 효과를 얻을 수 있습니다.

예제 코드

#include <stdio.h>

int my_round(float number) {
    return (int) (number < 0 ? number - 0.5 : number + 0.5);
}

int main() {
    printf("Rounding of (2.48): %d\n", my_round(2.48));
    printf("Rounding of (-5.79): %d\n", my_round(-5.79));
    return 0;
}

실행 결과

Rounding of (2.48): 2
Rounding of (-5.79): -6

코드 동작 설명

삼항 연산자 (number < 0 ? number - 0.5 : number + 0.5)가 핵심입니다.

  • 양수인 경우: 2.48에 0.5를 더하면 2.98이 되고, 정수형으로 변환되면서 소수점 이하가 잘려 2가 됩니다.
  • 음수인 경우: -5.79에서 0.5를 빼면 -6.29가 되고, 형 변환 후 -6이 됩니다.

이처럼 부호에 따라 0.5를 더하거나 빼는 방식으로, 어떤 부동 소수점 값이든 올바르게 반올림된 정수를 반환하는 함수를 단 한 줄로 완성할 수 있습니다.