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

C/C++ pow() 함수 완벽 정리: 거듭제곱 계산의 모든 것

C/C++에서 거듭제곱(power) 함수는 주어진 숫자의 거듭제곱 값을 계산할 때 사용하는 수학 함수입니다. pow() 함수는 밑(base)을 지수(exponent)만큼 거듭제곱한 값, 즉 ab를 구하는 역할을 합니다.

함수 원형 (Syntax)

double pow(double a, double b)

pow() 함수는 두 개의 double형 인자를 입력받아 double형 결과값을 반환합니다. 이 함수는 표준 라이브러리인 <math.h>(C++)에서는 <cmath> 헤더 파일에 정의되어 있으므로, 사용 전에 반드시 해당 헤더를 포함해야 합니다.

정수 입력 시 주의사항

pow() 함수에 정수를 전달하면 함수 내부적으로 자동으로 double 자료형으로 변환됩니다. 그런데 여기서 한 가지 문제가 발생할 수 있습니다. 부동소수점 연산 특성상 간혹 변환 과정에서 값이 약간 작게 저장되는 경우가 있기 때문입니다.

예를 들어 3을 전달했는데 내부적으로 2.999...로 저장된다면, 제곱 결과는 8.99940001이 되고 이것이 정수로 변환되면서 8로 잘못 출력될 수 있습니다. 이러한 오류는 드물게 발생하지만, 이를 방지하기 위해 결과값에 0.25(또는 0.5)와 같은 보정값을 더해 반올림 처리하는 방법이 널리 사용됩니다.

예제 코드

#include <stdio.h>
#include <math.h>
int main() {
    double x = 6.1, y = 2;
    double result = pow(x, y);
    printf("%f raised to the power of %f is %f \n", x, y, result);
    // 정수 입력 예제
    int a = 5, b = 2;
    int square = pow(a, b) + 0.25; // 오차 보정
    printf("%d raised to the power of %d is %d \n", a, b, square);
    return 0;
}

실행 결과

6.100000 raised to the power of 2.000000 is 37.210000
5 raised to the power of 2 is 25

정리

pow() 함수는 실수형 거듭제곱 계산에 매우 유용하지만, 정수 지수를 다룰 때는 부동소수점 오차 가능성을 항상 염두에 두어야 합니다. 정수 거듭제곱만 필요하다면 직접 곱셈 루프를 작성하거나, 결과에 보정값을 더해 안전하게 처리하는 것이 좋은 습관입니다.