내가 최대 10 소수점 이하 자릿수로 C++에서 double
값을 캐릭터 라인 화하고 싶은, 그래서 나는 그러나C++에서 소수점 이하 하나 이상을 인쇄 하시겠습니까? <code>value</code> 어떤 정확한 적분 값과 같은 4.0이있는 경우,
std::stringstream s;
double value = 3.1415926;
s << "value is " << std::setprecision(10) << value;
같은 것을 사용, 나는 그것이 4.0
하지를 인쇄하려면 단지 4
. C++ stringstream
또는 예전의 snprintf()
으로이 작업을 수행 할 수있는 방법이 있습니까?
지금까지 내가 생각할 수있는 유일한 해결책은 value
floor(value)
에 비교하는 것입니다 : 내가 필요하다면
std::stringstream s;
if (floor(value) == value)
s << std::setprecision(1) << std::fixed << value;
else
s << std::setprecision(10) << value;
내가 그 해결책을 유지하는 것입니다,하지만 난 어떤 내려다 보이는 해요 경우 궁금 조건부를 피할 수있는 iostream 가제트.
, I 때문에 내 자신의 조건부 솔루션에서'std :: fixed'를 이미 사용하고 있습니다. 그러나 상관없이, 나는 당신의 "라이브 데모"를 체크하고, 원하는 출력을 생성하지 않고있다. '4.0000000000'이 아닌'4.0' (정확한 적분 값의 특별한 경우)을 출력 할 필요가 있습니다. –
@ RyanV.Bissell 그럼 당신은 당신 자신의 질문에 답했습니다. 정밀도를 조건부로 설정해야합니다. –
그렇다면 누군가가 ""또는 ""도구가 없으면 직접 목표를 달성 할 수 있습니다. 조건부로 계속해야 할 것입니다. "동의하겠습니다. –