2012-02-23 6 views
3

내 코드의 모든 경우에 대해 10 진수로 출력 할 수 있고 과학적으로 출력 할 수 없길 원합니다. 그때 122041e + 08이 있다면 내가 4.6342571e + 06이있는 경우과학 표기법을 C++에서 십진수로 변환

는 그때 나는 그것이 같은 4634257.1

... 등등 표시 할이 122,041,000

로 표시합니다.

내 코드를 사용하여, 4.6342571e + 06의 출력은 4634257.100000

void conversion(double counts) 
{ 
    std::ostringstream ss; 
    ss << std::fixed << counts; 
    std::cout << ss.str() << " MeV"; 
} 

누군가가 끝까지 공의를 추가 왜 나에게 설명하고이를 제거 할 수 있다면 할 수있다.

답변

2

출력 문자열 스트림에 precision이라는 메서드가 있습니다. 쉼표 뒤에있는 자릿수를 조정하는 데 사용할 수 있습니다. 기본값은 6이며 누락 된 숫자는 0으로 채워집니다 (따라서 고정 된 이름). 4634257.1을 달성하기 위해 1, 표시 정밀도를 설정되는 : 당신이 (무의식적으로) 그들을 위해 요청했기 때문에

void conversion(double counts) 
{ 
    std::ostringstream ss; 
    ss.precision(1); 
    ss << std::fixed << counts; 
    std::cout << ss.str() << " MeV"; 
} 
0

IT는 0을 추가합니다. 기본 정밀도는 6이며 고정 된 형식은 소수점 이하 6 자리를 의미합니다 (이전의 몇 자리에 관계없이). 정밀도는 출력에 사용되는 형식에 따라 다른 의미를 갖습니다. (직각으로 들리지는 않지만, 실제로 무엇을 기대해야하는지 알게되면 실제로 잘 작동합니다.)

관련 문제