본문 바로가기
프로그래밍/C++

C++ 소수점 처리방법 : floor, ceil, round

by 머니테크리더 2023. 7. 21.
반응형

C++ 소수점 처리 방법 알아보기 대문 이미지
C++ 소수점 처리 방법 알아보기 대문 이미지

🔖 INDEX

     

     

    C++에서 실수형 변수를 다루는 방법 중, 특히 소수점 처리 방법 중 정수로 변환하는 방법에 대해서 자세히 알아보겠습니다.

    정수형 (int)로 변환

    실수형 자료형 (double, float)을 정수형 (int)로 변환하면 소수점 이하의 값이 버려집니다. 아래는 이에 대한 예시입니다:

    double num1 = 3.14, num2 = 3.78, num3 = -3.34;
    int int_num1 = (int)num1;  // int_num1은 이제 3입니다.
    int int_num2 = (int)num2;  // int_num2은 이제 3입니다.
    int int_num3 = (int)num3;  // int_num3은 이제 -3입니다.

    물론, 이렇게 단순히 정수로 변환하는 것 외에도 C++에서 제공하는 여러 수학 함수들을 활용할 수 있습니다.

     

    floor 함수로 변환

    'floor' 함수는 주어진 수보다 작거나 같은 가장 큰 정수를 반환합니다. 이는 소수점 아래를 '내림'하는 역할을 합니다.

    #include <cmath>
    double num1 = 3.14, num2 = 3.78, num3 = -3.34;
    double floor_num1 = floor(num1);  // floor_num1은 이제 3입니다.
    double floor_num2 = floor(num2);  // floor_num2은 이제 3입니다.
    double floor_num3 = floor(num3);  // floor_num3은 이제 -4입니다.

     

    ceil 함수로 변환

    'ceil' 함수는 주어진 수보다 크거나 같은 가장 작은 정수를 반환합니다. 이는 소수점 아래를 '올림'하는 역할을 합니다.

    #include <cmath>
    double num1 = 3.14, num2 = 3.78, num3 = -3.34;
    double ceil_num1 = ceil(num1);  // ceil_num1은 이제 4입니다.
    double ceil_num2 = ceil(num2);  // ceil_num2은 이제 4입니다.
    double ceil_num3 = ceil(num3);  // ceil_num3은 이제 -3입니다.

     

     

    round 함수로 변환

    마지막으로 'round' 함수는 가장 가까운 정수로 주어진 수를 반올림합니다.

    #include <cmath>
    double num1 = 3.14, num2 = 3.78, num3 = -3.34;
    double round_num1 = round(num1);  // round_num1은 이제 3입니다.
    double round_num2 = round(num2);  // round_num2은 이제 4입니다.
    double round_num3 = round(num3);  // round_num3은 이제 -3입니다.

     

    소수점 처리 고급 기법

    이렇게 C++에서는 다양한 방법으로 소수점을 처리할 수 있습니다. 그러나 이런 기본적인 방법들 외에도 더 복잡한 요구 사항을 충족시키기 위해 정밀한 실수형 계산, 오차 범위 설정 등 여러 고급 기법들이 있습니다. 다음은 여러 고급 기법들에 대해서 간단하게 설명해보겠습니다.

    • 부동소수점 오차 처리 : 컴퓨터에서 소수를 표현하려면 부동소수점 방식을 이용합니다. 그러나 이 방식은 오차를 내포하고 있습니다. 예를 들어, 0.1 + 0.2는 정확히 0.3이 아닌, 그 근처의 값이 됩니다. 이러한 문제를 해결하기 위해 오차 범위를 설정하거나 'std::numeric_limits<double>::epsilon()' 등을 활용하여 처리할 수 있습니다.
    • 고정 소수점 사용 : 부동소수점의 오차 문제를 해결하기 위한 한 가지 방법은 소수점 위치를 고정하는 것입니다. 이는 주로 통화나 금융 데이터 등에 사용되며, 특정한 정밀도를 유지하면서도 오차를 줄일 수 있습니다.
    • 'std::setprecision'과 'std::fixed' 사용 : iomanip 라이브러리에는 출력 시 소수점 이하의 자릿수를 제한하는 'std::setprecision' 함수와 소수점을 고정시키는 'std::fixed'라는 함수가 있습니다. 이들을 활용하면 출력 형식을 보다 세밀하게 조정할 수 있습니다.
    • 복소수 처리: C++에는 복소수를 처리하는 complex 라이브러리도 있습니다. 이를 이용하면 실수부와 허수부를 갖는 복소수를 표현하고 계산할 수 있습니다.

    이와 같이 C++에서는 다양한 방법으로 소수점과 관련된 처리를 할 수 있습니다. 각 방법은 사용 상황에 따라 적절히 선택하고 활용하면 됩니다.

     

     

    댓글