2013-04-14 2 views
0

float 변수 x를 C++에서 "1.00e6"형식으로 인쇄하려고합니다. 여기서 e 앞에 소수점 2 자리 만 있으면됩니다."e"앞에 소수점 이하 자릿수를 어떻게 제한합니까?

이 글을 읽고 : http://www.cplusplus.com/reference/cstdio/printf/, 어떤 지정자를 사용해야할지 모르겠습니다. 이것을 C++로 할 수 있습니까?

: 당신이 어떤 유닉스 계열 시스템에 일반적으로 (등 OS X, 리눅스, BSD) 경우
+2

왜 'printf'를 사용하고 있습니까? –

+2

@AlexChamberlain :'printf()'를 사용할 때 본질적으로 잘못된 점은 없습니다. ''보다 쉽게 ​​현지화 할 수 있습니다. 현대의 컴파일러는 그것을 체크 할 것이다. –

+1

@AlexChamberlain : "관용적"은 본질적으로 주관적입니다. 모두가 ''또는 ''을 사용할 것인지에 대해서는 동의하지 않으며,이 토론을위한 포럼이 아닙니다. 의견 대신 사실에 충실하십시오. –

답변

7

당신은 C++에서 같은 작업을 수행 할 수 있습니다

double f = 1.00e6; 
std::cout.precision(2); 
std::cout << std::scientific; 
std::cout<<f <<std::endl; 
It will output: 1.00e+06 in this case. 

편집 : @ user657267에 의해 지적, precision의 조작뿐만 아니라있다,

double f = 1.00e6; 
std::cout << std::setprecision(2) << std::scientific << f << '\n'; 

이 같은 효과가 있어야한다.

+0

'precision'을위한 조작자가 있습니다.'std :: cout << std :: setprecision (2) << std :: scientific << f << '\ n'; ' – user657267

+0

@ user657267이 동의했습니다. 그 점을 지적 해 주셔서 감사합니다. – taocp

2

N 원하는 정밀도 .N와 정밀도를 지정 man 3 printfprintf()에 대한 문서를 읽기
#include <stdio.h> 
int main() 
{ 
    printf("%.2e\n", 1.0); 
} 

출력 :

이 기준에 의한 C++ 표준의 일부인 C 표준 라이브러리에 대한 질문이 정말이기 때문에 내가 C의 코드를 준
1.00e+00 

.

관련 문제