C 언어에서 부동소수점 연산 다루기

CBeginner
지금 연습하기

소개

이 실습에서는 C 언어에서 부동소수점 연산을 다루는 방법을 배웁니다. 먼저 floatdouble 변수를 선언하고, 이 변수들에 대한 다양한 산술 연산을 수행한 후, 적절한 정밀도로 결과를 출력합니다. 이 실습은 C 프로그래밍에서 십진수를 다루고 정확한 수학 계산을 수행하는 데 필수적인 기술을 다룹니다.

첫 번째 단계에서는 floatdouble 데이터 형식을 사용하여 부동소수점 변수를 선언하고 원하는 정밀도로 값을 출력하는 방법을 보여줍니다. 두 번째 단계에서는 부동소수점 숫자에 대한 덧셈, 뺄셈, 곱셈 및 나눗셈과 같은 산술 연산을 수행하는 데 중점을 둡니다.

부동소수점 변수 선언

이 단계에서는 C 언어에서 floatdouble 데이터 형식을 사용하여 부동소수점 변수를 선언하는 방법을 배웁니다. 부동소수점 변수는 십진수를 저장하고 정밀한 수학 계산을 수행하는 데 필수적입니다.

먼저 변수 선언을 보여주는 새로운 C 파일을 생성해 봅시다.

cd ~/project
nano floating_variables.c

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

#include <stdio.h>

int main() {
    // float 변수 선언
    float temperature = 98.6;
    float price = 19.99;

    // double 변수 선언
    double pi = 3.14159265359;
    double large_number = 1234567890.123456789;

    // 변수 출력
    printf("온도 (float): %.2f\n", temperature);
    printf("가격 (float): %.2f\n", price);
    printf("파이 (double): %.5f\n", pi);
    printf("큰 숫자 (double): %.9f\n", large_number);

    return 0;
}

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

gcc floating_variables.c -o floating_variables
./floating_variables

예상 출력:

온도 (float): 98.60
가격 (float): 19.99
파이 (double): 3.14159
큰 숫자 (double): 1234567890.123456789

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

  • float는 단정밀도 부동소수점 수 (일반적으로 4 바이트) 를 위해 사용됩니다.
  • double는 배정밀도 부동소수점 수 (일반적으로 8 바이트) 를 위해 사용됩니다.
  • %.2f%.5f 형식 지정자는 출력 시 소수점 자릿수 정밀도를 제어합니다.

부동소수점 값에 대한 산술 연산

이 단계에서는 C 언어에서 부동소수점 숫자에 대한 다양한 산술 연산 (덧셈, 뺄셈, 곱셈, 나눗셈) 을 수행하는 방법을 배웁니다.

이전 파일에 대한 수정을 통해 부동소수점 산술 연산을 보여주겠습니다.

cd ~/project
nano floating_arithmetic.c

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

#include <stdio.h>

int main() {
    // 부동소수점 변수 선언
    float a = 10.5;
    float b = 3.2;

    // 덧셈
    float sum = a + b;
    printf("덧셈: %.2f + %.2f = %.2f\n", a, b, sum);

    // 뺄셈
    float difference = a - b;
    printf("뺄셈: %.2f - %.2f = %.2f\n", a, b, difference);

    // 곱셈
    float product = a * b;
    printf("곱셈: %.2f * %.2f = %.2f\n", a, b, product);

    // 나눗셈
    float quotient = a / b;
    printf("나눗셈: %.2f / %.2f = %.2f\n", a, b, quotient);

    // 혼합 산술 연산
    float mixed_calc = (a + b) * (a - b) / b;
    printf("혼합 계산: (%.2f + %.2f) * (%.2f - %.2f) / %.2f = %.2f\n",
           a, b, a, b, b, mixed_calc);

    return 0;
}

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

gcc floating_arithmetic.c -o floating_arithmetic
./floating_arithmetic

예상 출력:

덧셈: 10.50 + 3.20 = 13.70
뺄셈: 10.50 - 3.20 = 7.30
곱셈: 10.50 * 3.20 = 33.60
나눗셈: 10.50 / 3.20 = 3.28
혼합 계산: (10.50 + 3.20) * (10.50 - 3.20) / 3.20 = 24.41

부동소수점 산술 연산에 대한 주요 사항:

  • 소수점 자릿수를 제어하려면 %.2f 형식 지정자를 사용합니다.
  • 부동소수점 연산은 표준 수학 규칙을 따릅니다.
  • 부동소수점 계산 시 정밀도 제한에 유의해야 합니다.

적절한 정밀도로 결과 출력

이 단계에서는 C 언어에서 형식 지정자를 사용하여 부동소수점 숫자 출력의 정밀도를 제어하는 방법을 배웁니다.

다양한 정밀도 형식을 탐색하기 위한 새로운 파일을 생성합니다.

cd ~/project
nano floating_precision.c

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

#include <stdio.h>

int main() {
    // 부동소수점 변수 선언
    double pi = 3.14159265358979323846;
    double large_number = 1234567.89012345;

    // 기본 출력 (제한된 정밀도)
    printf("기본 출력:\n");
    printf("Pi: %f\n", pi);
    printf("Large Number: %f\n\n", large_number);

    // 소수점 자릿수 제어
    printf("정밀도 제어:\n");
    printf("Pi (소수점 2 자리): %.2f\n", pi);
    printf("Pi (소수점 5 자리): %.5f\n", pi);
    printf("Pi (소수점 10 자리): %.10f\n\n", pi);

    // 과학 표기법
    printf("과학 표기법:\n");
    printf("Large Number (기본): %e\n", large_number);
    printf("Large Number (소수점 3 자리): %.3e\n\n", large_number);

    // 너비와 정밀도 결합
    printf("너비와 정밀도:\n");
    printf("Pi (너비 10, 소수점 4 자리): %10.4f\n", pi);
    printf("Large Number (너비 15, 소수점 2 자리): %15.2f\n", large_number);

    return 0;
}

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

gcc floating_precision.c -o floating_precision
./floating_precision

예상 출력:

기본 출력:
Pi: 3.141593
Large Number: 1234567.890123

정밀도 제어:
Pi (소수점 2자리): 3.14
Pi (소수점 5자리): 3.14159
Pi (소수점 10자리): 3.1415926536

과학 표기법:
Large Number (기본): 1.234568e+06
Large Number (소수점 3자리): 1.235e+06

너비와 정밀도:
Pi (너비 10, 소수점 4자리):      3.1416
Large Number (너비 15, 소수점 2자리):     1234567.89

정밀도 형식 지정에 대한 주요 사항:

  • %f는 부동소수점 숫자의 기본 형식 지정자입니다.
  • .2f는 소수점 2 자리, .5f는 소수점 5 자리를 의미합니다.
  • %e 또는 %E는 과학 표기법을 표시합니다.
  • 너비 지정자는 출력을 정렬하고 형식을 지정하는 데 도움이 됩니다.

요약

이 실험에서는 floatdouble 데이터 형식을 사용하여 부동소수점 변수를 선언하고, 덧셈, 뺄셈, 곱셈, 나눗셈과 같은 산술 연산을 수행하는 방법을 배웠습니다. 또한, 형식 지정자를 사용하여 부동소수점 숫자 출력 시 소수점 자릿수의 정밀도를 제어하는 방법을 학습했습니다. 이러한 기술은 C 프로그래밍에서 십진수 데이터를 다루고 정밀한 수학 계산을 수행하는 데 필수적입니다.