2012-02-23 12 views
3

私のコードのすべてのケースについて10進数で出力することができます。私はその後、122041e + 08を持っている場合、私は4.6342571e + 06を持っている場合は科学的表記法をC++で10進数に変換する

は、私はその後、私はそれがよう4634257.1

...というように表示することが122041000

として表示します。私のコードを使用して

、4.6342571e + 06の出力には、4634257.100000

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

である、それはそれらを削除することができます場合は、それが最後に0を追加し、なぜ誰かが私に説明できます。

答えて

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

あなたは(知らずに)彼らのために求めてきましたので、それがゼロを追加します。デフォルトの精度は6で、固定フォーマットでは、10進数の後に6桁を意味します(前の数にかかわらず)。精度は、出力に使用されているフォーマットに応じて異なる意味を持ちます。 (これは非常に直感的ではありませんが、実際には何を期待するか分かるとうまくいきます)

関連する問題