C 언어에서 반올림 연산 수행하기

CBeginner
지금 연습하기

소개

이 실습에서는 C 프로그래밍에서 반올림 연산을 수행하는 방법을 배웁니다. 부동소수점 변수를 선언한 후 round(), floor(), ceil()과 같은 다양한 반올림 함수를 사용하여 값을 조작하는 방법을 탐색합니다. 마지막으로 반올림된 결과를 출력하여 서로 다른 반올림 동작을 관찰합니다.

이 실습은 C 를 사용한 기본 산술 연산의 기본적인 기술을 다루며, 부동소수점 숫자와 그 반올림 기법을 다루는 견고한 기반을 제공합니다.

부동소수점 변수 선언

이 단계에서는 반올림 연산을 수행하는 데 필수적인 C 에서 부동소수점 변수를 선언하고 초기화하는 방법을 배웁니다.

먼저 부동소수점 변수를 다루기 위한 새로운 C 파일을 생성합니다.

cd ~/project
nano rounding.c

이제 다음 코드를 파일에 추가합니다.

#include <stdio.h>

int main() {
    // 부동소수점 변수 선언
    float num1 = 3.7;
    double num2 = 4.2;

    // 원래 값 출력
    printf("원래 float 값: %.1f\n", num1);
    printf("원래 double 값: %.1f\n", num2);

    return 0;
}

프로그램을 컴파일하고 실행합니다.

gcc rounding.c -o rounding
./rounding

예상 출력:

원래 float 값: 3.7
원래 double 값: 4.2

코드를 자세히 살펴보겠습니다.

  • 단정밀도 부동소수점 수를 위해 float를 사용합니다.
  • 배정밀도 부동소수점 수를 위해 double를 사용합니다.
  • %.1f 형식 지정자는 소수점 첫째 자리까지 표시합니다.
  • num1num2는 십진수 값으로 초기화됩니다.

함수 사용 (예: round, floor, ceil) 을 통한 값 반올림

이 단계에서는 C 에서 반올림 함수를 사용하여 부동소수점 숫자를 조작하는 방법을 배웁니다. 이전 rounding.c 파일을 수정하여 서로 다른 반올림 기법을 보여줍니다.

기존 파일을 엽니다.

cd ~/project
nano rounding.c

이전 내용을 다음 코드로 바꿉니다.

#include <stdio.h>
#include <math.h>

int main() {
    // 부동소수점 변수 선언
    float num1 = 3.7;
    double num2 = 4.2;

    // 서로 다른 함수를 사용하여 값 반올림
    printf("원래 값:\n");
    printf("num1: %.1f, num2: %.1f\n\n", num1, num2);

    // round() 함수 사용
    printf("round 함수:\n");
    printf("round(num1): %.0f\n", round(num1));
    printf("round(num2): %.0f\n\n", round(num2));

    // floor() 함수 사용
    printf("floor 함수:\n");
    printf("floor(num1): %.0f\n", floor(num1));
    printf("floor(num2): %.0f\n\n", floor(num2));

    // ceil() 함수 사용
    printf("ceil 함수:\n");
    printf("ceil(num1): %.0f\n", ceil(num1));
    printf("ceil(num2): %.0f\n", ceil(num2));

    return 0;
}

수학 라이브러리와 함께 프로그램을 컴파일합니다.

gcc rounding.c -o rounding -lm
./rounding

예상 출력:

원래 값:
num1: 3.7, num2: 4.2

round 함수:
round(num1): 4
round(num2): 4

floor 함수:
floor(num1): 3
floor(num2): 4

ceil 함수:
ceil(num1): 4
ceil(num2): 5

반올림 함수에 대한 주요 내용:

  • round(): 가장 가까운 정수로 반올림
  • floor(): 가장 가까운 작은 정수로 내림
  • ceil(): 가장 가까운 큰 정수로 올림
  • 컴파일 시 -lm 플래그를 사용하여 수학 라이브러리를 연결합니다.
  • %.0f 형식 지정자는 소수점이 없는 정수를 표시합니다.

반올림된 결과 출력

이 단계에서는 서로 다른 정밀도 수준과 서식 옵션으로 반올림된 결과를 서식화하고 출력하는 방법을 배웁니다.

기존 파일을 엽니다.

cd ~/project
nano rounding.c

다양한 출력 기법을 보여주도록 코드를 업데이트합니다.

#include <stdio.h>
#include <math.h>

int main() {
    // 부동소수점 변수 선언
    float num1 = 3.7;
    double num2 = 4.2;

    // 서로 다른 출력 서식으로 반올림
    printf("반올림 예시:\n");

    // 서로 다른 정밀도로 반올림된 값 출력
    printf("1. 반올림된 값:\n");
    printf("   round(num1) = %.0f\n", round(num1));
    printf("   round(num2) = %.0f\n\n", round(num2));

    // 필드 너비와 정밀도를 사용하여 서식화된 값 출력
    printf("2. 서식화된 반올림된 값:\n");
    printf("   너비를 가진 반올림된 num1: %5.1f\n", round(num1));
    printf("   너비를 가진 반올림된 num2: %5.1f\n\n", round(num2));

    // 정수와 부동소수점 표현 출력
    printf("3. 정수 및 부동소수점 표현:\n");
    printf("   num1 을 정수로: %d\n", (int)round(num1));
    printf("   num2 를 정수로: %d\n", (int)round(num2));

    return 0;
}

프로그램을 컴파일하고 실행합니다.

gcc rounding.c -o rounding -lm
./rounding

예상 출력:

반올림 예시:
1. 반올림된 값:
   round(num1) = 4
   round(num2) = 4

2. 서식화된 반올림된 값:
   너비를 가진 반올림된 num1:   4.0
   너비를 가진 반올림된 num2:   4.0

3. 정수 및 부동소수점 표현:
   num1을 정수로: 4
   num2를 정수로: 4

주요 출력 기법:

  • %.0f: 소수점 자리를 제거
  • %5.1f: 필드 너비와 정밀도 설정
  • (int)를 사용한 형변환: 정수로 변환
  • 서로 다른 형식 지정자는 출력 외관을 제어합니다.

요약

이 실습에서는 floatdouble를 포함한 부동소수점 변수를 선언하는 방법과 round(), floor(), ceil()와 같은 다양한 반올림 함수를 사용하여 이러한 값을 조작하는 방법을 배웠습니다. 원래 값을 출력한 후 반올림 함수를 사용하여 반올림된 결과를 표시했습니다. 이를 통해 이러한 함수의 서로 다른 동작 방식과 숫자를 올림, 내림 또는 가장 가까운 정수로 반올림하는 데 어떻게 적용할 수 있는지 이해할 수 있었습니다.