2016-12-27 6 views
0

소수는 십진 자 다음 정확히 다섯 자리로 표시되어야합니다. 숫자가 0이면 0.00000 대신 0 만 표시됩니다. 버전 setiosflags(ios::fixed)에서C++에서 소수점 뒤에 5 자리 표시하지만 소수점 뒤에 0이 있으면 인쇄하지 마십시오.

std::cout << std::setprecision(5) << s0; 

: 숫자 그의 진수 녹음에 0을 경우에만 예 0.08500 대신 0.085 // S0를 출력 내 변수

if (s0==) cout<<"0" 
else cout<<setiosflags(ios::fixed)<<setprecision(5)<<s0; 
+0

그리고 당신이 가지고있는 코드에 어떤 문제가 있습니까? (불법적 인 조건 외에)? 's0'의 어떤 특정 값에 대해 기대되는 * 실제 * 출력은 무엇입니까? –

+0

예상 : 0.085 그러나 내 코드 인쇄 : 0.08500 –

+0

s0가 정확히 0이거나 출력이 "0.00000"이 될 때만 "0"을 인쇄 하시겠습니까? 예를 들어 s0가 <0.00001 일 경우? – Oncaphillis

답변

2

시도이며, 0보다 다른 숫자를 표시 뒤에 오는 0을 강제합니다.

+0

그것은 작동합니다. 정말 고마워. :) –

+0

@ElizMazalova 질문에 답변 한 경우이 대답을 허용으로 표시하십시오. 이렇게하면 답이없는 질문 목록에서 제거되어 다른 사람들이 성공적으로 Google에 질문 할 수 있습니다. –

0

분명히 보이지만 printf를 사용할 수 있습니까? 0 특별한 경우이기 때문에

#include <stdio.h> 

int main(){ 

    printf("%5.3f", 0.8500000000); 
    return 0; 
} 
+0

이 질문은 C++에만 해당하는 것으로 보입니다. (또한, cout, 태그로 판단). –

0

당신은 쉽게, 스트림 및 < < 운영자와 C++에서 그것을 할 수 없습니다.

함수

std::string tonice(double x) 
{ 
    char buff[64]; 
    if(x == 0) 
     sprintf(Buff, "0"); 
    else 
     sprintf(buff, "%5.3f", x); 
    return std;string(buff); 

    } 

작성이어서

cout << "The data is " << tonice(x) << " other bits and bats"; 
0

표준 : COUT < < 표준 : setprecision (5) < < S0; 이것은 정밀도를 설정하는 가장 좋은 방법입니다.