ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • C++ 소수점 출력 범위 설정하기
    Knowledge/C++ 2019. 7. 5. 09:56
    반응형

     

    BOJ 1008번 문제 ( https://www.acmicpc.net/problem/1008 ) 를 풀면서 알게 된 것

     

    C++에는 cout.precision(); 이라는, 출력 자릿수를 조절해주는 함수가 있습니다.

     

    코드로 바로 볼게요 

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #include <iostream>
    using namespace std;
     
    int main(void)
    {
        int a = 10;
        int b = 3;
        
        cout << a/(double)b;
        // 3.33333
        
    }
    cs

     

    이 코드는 3.33333. 그러니까 소수점 아래 다섯번째 자리까지만 출력합니다.

    그러나 출력 전에 cout.precision();이라는 함수에, 파라미터로 10을 넣어 사용하면

     

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #include <iostream>
    using namespace std;
     
    int main(void)
    {
        int a = 10;
        int b = 3;
        
        cout.precision(10);
        cout << a/(double)b;
        // 3.333333333
        
    }
    cs

     

    소수점 아래 아홉번째 자리까지 출력이 됩니다.

    10을 넣었는데 소수점 아래 아홉번째 자리까지 출력되는 걸 보고 눈치 채신 분들도 계시겠지만

    cout.precision()은 사실 소수점 아래 부분의 출력 범위만 설정하는 게 아니고 

    실수의 정수부와 소수부를 합친, 전체의 출력 범위를 설정하는 함수입니다. 

     

    만약, 이걸 소수점 아래 숫자의 출력 범위만 설정하게 쓰려면  

    함수 위에 cout << fixed; 라는 라인을 추가하면 되고요

    이걸 설정한 후 다시 해제해서 실수 전체의 출력 범위를 설정하고 싶다면

    cout.unsetf(ios::fixed); 이라는 라인을 추가해주면 됩니다 

     

    아래 코드처럼요

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    #include <iostream>
    using namespace std;
     
    int main(void)
    {
        int a = 10;
        int b = 3;
        
        cout << fixed;
        cout.precision(9);
        cout << a/(double)b << endl;
        // 3.333333333
        
        cout.unsetf(ios::fixed);
        cout << a/(double)b;
        // 3.33333333
    }
    cs

     

    - 추가!

       printf()를 활용할 땐 아래와 같이 서식지정자를 활용하면 됩니다.

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #include <stdio.h>
     
    int main(void)
    {
        int a = 10;
        int b = 3;
        
        printf("%f \n",a/(double)b);
        // 3.333333
        printf("%.9f",a/(double)b);
        // 3.333333333 
    }
    cs

    도움이 되었길 바랍니다!

     

    • 참고

         C++. cout 소수점 자리수 조절하기. 

         https://pmoncode.tistory.com/20

     

         C언어, C++ 소수점 자릿수 조절하기

         https://semaph.tistory.com/7

     
    반응형

    댓글

Designed by Tistory.