개발/C++
C++. cout 소수점 자리수 조절하기.ordi2016. 11. 8. 20:22
C++
cout을 이용한 출력으로 소수점 자리수 조절하기
Power C++의 문제를 풀던 도중, PI를 출력하는 문제가 있었습니다. 그런데 이 친구가 완전히 출력이 안되었습니다.
완전히 출력하고 싶은 마음에 공부를 해보았습니다.
본문.
일단 출력하고자 수를 double에 저장 했습니다.
4321.123456789를 저장하고 바로 출력을 해보니 4321.12가 출력 되었습니다.
처음엔 전체 자리수가 6자리고 고정 되어있는 것을 발견하였습니다.
그다음 "cout << fixed;"과 "cout.precision(6);"을 입력하고 출력해보았습니다.
그러니 4321.123457이 출력되었습니다.
"cout << fixed;" 의 뜻은 소수점을 고정시켜 표현을 하겠다는 뜻입니다.
"cout.precision(6);" 의 뜻은 6자리까지 표현을 하겠다는 뜻입니다.
이 두 표현을 합치면, 소수점 6자리 표현하겠다는 뜻입니다.
그러면 왜 4321.123456이 출력이 안되고 4321.123457이 되었을까?
그 이유는 나머지 버리는 자리 수는 반올림이 되기 때문입니다.
그래서 6째 자리까지 표현하고 7째 자리부터는 버려지기 때문에, 7째 자리인 "7"의 의미를 남기기 위해서 반올림이 되었습니다.
고로, 4321.123457이 표현이 되었던 것입니다.
"cout << fixed;"를 해제하시려면, "cout.unsetf(ios::fixed);"를 사용하시면됩니다.
마찬가지로 "cout << fixed;"는 "cout.setf(ios::fixed);"로 표현이 가능합니다.
아래에 예제 코드를 적어 놓았으니 참고 하시면 좋을 것 같습니다.
소스코드.
참고 사이트.
'개발 > C++' 카테고리의 다른 글
C++. 복사 생성자와 복사 대입 연산자의 차이 (2) | 2016.11.15 |
---|
댓글