2
int main(){
    std::string text = "15555555.2587";
    std::stringstream ss;
    double number;
    ss << text;
    ss >> number;
    std::cout << std::fixed << std::setw( 11 ) << std::setprecision( 6 ) 
      << std::setfill( '0' ) << number<<endl;

    return 0;
}

上記のプログラムの出力は 15555555.0000 です

小数点以下の値を切り捨てます。

どうすれば正しい値を取得できますか?

4

2 に答える 2

3

期待どおりに正しい値がありますnumbercout問題は、次の方法で印刷する必要があることです。

std::cout << std::fixed << std::setprecision(4) << number;

出力

155555.2587
于 2013-11-14T09:00:37.183 に答える
1

Alan Stokes が言ったように、ストリームはデフォルトで 6 桁の浮動小数点値を出力するように設定されています。次のようなストリーム マニピュレータを使用して、この動作を変更できますstd::setprecision()

int main()
{
    float pi = 3.141592654;

    std::cout << std::fixed << std::setprecision( 4 ) << pi << std::endl;
}

上記のコードは次を出力します。

3,1416

于 2013-11-14T08:57:03.083 に答える