-
C++ 소수점 출력 범위 설정하기Knowledge/C++ 2019. 7. 5. 09:56반응형
BOJ 1008번 문제 ( https://www.acmicpc.net/problem/1008 ) 를 풀면서 알게 된 것
C++에는 cout.precision(); 이라는, 출력 자릿수를 조절해주는 함수가 있습니다.
코드로 바로 볼게요
123456789101112#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을 넣어 사용하면
12345678910111213#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); 이라는 라인을 추가해주면 됩니다
아래 코드처럼요
1234567891011121314151617#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.333333333cout.unsetf(ios::fixed);cout << a/(double)b;// 3.33333333}cs - 추가!
printf()를 활용할 땐 아래와 같이 서식지정자를 활용하면 됩니다.
123456789101112#include <stdio.h>int main(void){int a = 10;int b = 3;printf("%f \n",a/(double)b);// 3.333333printf("%.9f",a/(double)b);// 3.333333333}cs 도움이 되었길 바랍니다!
- 참고
C++. cout 소수점 자리수 조절하기.
https://pmoncode.tistory.com/20
C언어, C++ 소수점 자릿수 조절하기
반응형'Knowledge > C++' 카테고리의 다른 글
C++ EOF 처리 방법 ( 백준 10951 A+B - 4 ) (6) 2019.07.11 문자열을 출력하고 줄을 바꿔주는 puts() 함수 (0) 2019.07.08 C++ 의 입력과 출력 ( cin / cout / scanf / printf ) (2) 2019.07.07 C++ double 자료형 나머지연산(%) (0) 2019.07.05 알고리즘 문제풀이 (PS)에 적합한 C++ 버전 (0) 2019.07.01