2013-10-02 2 views
0

C++ (또는 부스트 라이브러리)에서 분수 부분의 주어진 숫자 자릿수를 표시하는 방법이 있습니까? 그러나 나는 분수 부분에 0을 후행으로 인쇄하고 싶지 않습니다 (예 : 1.000, 1.500). 이 경우를 참조하십시오C++ 분수 부분의 정확한 자릿수를 표시하는 방법

cout << std::setprecision(3) << 5.0/7.0 << endl; // 0.714 
cout << std::setprecision(3) << 12.0/7.0 << endl; // 1.71 
cout << std::setprecision(3) << 7.0/7.0 << endl; // 1 
cout << std::setprecision(3) << 10.5/7.0 << endl; // 1.5 

문제는 내가 두 라인 0.7141.714를 인쇄하고 싶지 setprecision 인쇄 라인 1과 다르게 라인이있다. 그리고 3 호선과 4 호선은 여전히 ​​11.5으로 유지하십시오.

+0

고정밀도 플래그 std :: fixed를 사용하여 정확한 3 자리 분수 부분을 얻은 다음 double/float로 변환하고 다시 문자열로 변환하여 후행 0을 없애고 목표를 달성 할 수도 있습니다. 그러나 그것을 할 수있는 깨끗한 방법이 아닌가? – Stan

답변

1

어떻게 같은 약 :

#include <cmath> 
using namespace std; 

cout << setprecision(ceil(log10(floor(x))+3) << x; 

정확히 빠르게,하지만 아이디어는 x의 정수 부분은 다음에 관심있는 소수 자릿수를 추가 할 필요 얼마나 많은 숫자 파악하는 것입니다하지 않음 그. 자신 만의 조작법을 써서 진지하게 생각한다면 그렇게 할 수 있습니다.

관련 문제