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

C++ fmax()와 fmin() 함수 사용법 완벽 정리

이 글에서는 C++에서 fmax()fmin() 함수를 사용하는 방법에 대해 자세히 알아보겠습니다.

fmax()와 fmin() 함수란?

fmax()fmin()cmath 헤더 파일에 정의되어 있는 수학 함수입니다. 두 함수 모두 float, double, long double 타입의 값 두 개를 인자로 받으며, fmax()는 두 값 중 최댓값을, fmin()은 최솟값을 반환합니다.

타입이 다른 인자 처리

흥미로운 점은 인자의 타입이 서로 다를 때의 동작입니다. 예를 들어 float와 double을 비교하거나, long double과 float를 비교하는 경우, 함수가 자동으로 타입 캐스팅(암시적 형 변환)을 수행한 후 적절한 결과값을 반환합니다. 따라서 개발자가 별도로 타입을 맞출 필요가 없어 편리합니다.

예제 코드

아래 예제는 양수, 음수, 부호가 다른 값 등 다양한 경우에 대해 fmax()fmin()의 동작을 보여줍니다.

#include <cmath>
#include <iomanip>
#include <iostream>
using namespace std;

main() {
    double res;
    // fmax() 사용 예
    res = fmax(50.0, 10.0); // 둘 다 양수인 경우 비교
    cout << fixed << setprecision(4) << "fmax(50.0, 10.0) = " << res << endl;
    
    res = fmax(-50.0, 10.0); // 부호가 반대인 경우 비교
    cout << fixed << setprecision(4) << "fmax(-50.0, 10.0) = " << res << endl;
    
    res = fmax(-50.0, -10.0); // 둘 다 음수인 경우 비교
    cout << fixed << setprecision(4) << "fmax(-50.0, -10.0) = " << res << endl;
    
    // fmin() 사용 예
    res = fmin(50.0, 10.0); // 둘 다 양수인 경우 비교
    cout << fixed << setprecision(4) << "fmin(50.0, 10.0) = " << res << endl;
    
    res = fmin(-50.0, 10.0); // 부호가 반대인 경우 비교
    cout << fixed << setprecision(4) << "fmin(-50.0, 10.0) = " << res << endl;
    
    res = fmin(-50.0, -10.0); // 둘 다 음수인 경우 비교
    cout << fixed << setprecision(4) << "fmin(-50.0, -10.0) = " << res << endl;
}

실행 결과

fmax(50.0, 10.0) = 50.0000
fmax(-50.0, 10.0) = 10.0000
fmax(-50.0, -10.0) = -10.0000
fmin(50.0, 10.0) = 10.0000
fmin(-50.0, 10.0) = -50.0000
fmin(-50.0, -10.0) = -50.0000

정리

fmax()fmin()은 두 수치 값의 최댓값과 최솟값을 손쉽게 구할 수 있는 표준 함수입니다. 일반적인 조건문(if문 또는 삼항 연산자)으로 최댓값/최솟값을 구하는 것보다 코드가 간결해지며, NaN 같은 특수한 부동소수점 값 처리에도 유용하게 활용됩니다. 다양한 부호 조합에서도 항상 올바른 결과를 반환하므로, 수치 계산 로직에서 안정적으로 사용할 수 있습니다.