반응형

소수점을 쓰다보면 자리수가 너무 많아질 때가 있다. 아래와 같은 경우다.

#include <iostream>

using namespace std;

int main() {
    double a = 10, b = 3;
    
    cout << a / b;

    return 0;
}
// 출력 : 3.333333....

 

이와 같은 경우 함수를 통해 조정 할 수 있다.

 cout.precision(n); // 다음 출력부터 n자리 만큼 표기

 

이 함수를 통해 3자리까지 나타내 보자.

#include <iostream>

using namespace std;

int main() {

    double a = 10, b = 3;
   
    cout.precision(3);

    cout << a / b;

    return 0;
}
//출력 : 3.33

 

하지만 문제가 생겼다.

3.333이 나와야 하는데, 3.33이 나와버린것!!!!!

cout.precision() 함수는 소수점이 아니라 전체 숫자부의 자리수를 디폴트값으로 하고있다. 즉, 소수부의 자리만이 아닌 정수부도 포함인 것이다. 따라서 3.333이 아니라 3.33이 출력된것.

그럼 소수부만 제어하기 위해선 어떤 방법을 써야할까....

바로 cout << fixed; 를 사용하면 된다.

#include <iostream>

using namespace std;

int main() {

    double a = 10, b = 3;

    cout << fixed;
    cout.precision(3);

    cout << a / b;

    return 0;
}
//출력 : 3.333

 

cout << fixed; 는 소수부의 자리만을 가리킨다는 뜻으로 봐도 된다.

따라서 소수점이 3자리로 정상적으로 나오는 모습을 확인 할 수있다!!

fixed를 해제하기 위해선 cout.unsetf(ios::fixed); 를 사용하여 해제 할 수있다.

 

 

반응형

+ Recent posts