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

 

코드로 바로 볼게요 

 

#include <iostream>

using namespace std;

 

int main(void)

{

    int a = 10;

    int b = 3;

    

    cout << a/(double)b;

    // 3.33333

}

 

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

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

 

 

#include <iostream>

using namespace std;

 

int main(void)

{

    int a = 10;

    int b = 3;

    

    cout.precision(10);

    cout << a/(double)b;

    // 3.333333333

}

 

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

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

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

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

 

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

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

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

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

 

아래 코드처럼요

 

#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

}

 

- 추가!

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

 

#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 

}

 

'C++' 카테고리의 다른 글

cin, cout 입출력 속도 빠르게 하는 방법  (3) 2019.09.25

scanf와 cin은 다음과 같이 속도면에서 큰 차이가 난다.

따라서 이를 해결하기 위해 사용할 수 있는 방법이 있다.

 

1
2
3
ios_base :: sync_with_stdio(false); 
cin.tie(NULL); 
cout.tie(NULL);
cs

 

+ endl 보다 "\n" 사용하는 것이 더 빠르다.

 

하지만 이는 일종의 편법이므로, 다음과 같은 주의사항이 있다.

 

1. scanf, printf와 함께 사용하면 안된다.

2. 싱글 쓰레드 환경에서만 사용 가능하다. (알고리즘 문제풀이시에 사용, 실무에서는 사용 X)

 

'C++' 카테고리의 다른 글

C/C++ 소수점 출력하는 방법  (0) 2020.07.21

+ Recent posts