8

ostringstream を使用した float から c++ 文字列への変換に関して問題があります。これが私の行です:

void doSomething(float t)
{
    ostringstream stream; 
    stream << t;
    cout << stream.str();
}

t の値が -0.89999 の場合は -0.9 に丸められますが、値が 0.0999 またはこれよりも小さい場合 (たとえば 1.754e-7)、丸めなしで印刷されます。これに対する解決策は何ですか。

4

4 に答える 4

17

を使用して ostringstream の精度を設定する必要がありますprecision

例えば

stream.precision(3);
stream<<fixed;    // for fixed point notation
//cout.precision(3); // display only
stream << t;

cout<<stream.str();
于 2010-09-20T04:51:34.297 に答える
7

特定の数の有効数字を表示したい場合は、setprecision(n) を使用してみてください。ここで、n は必要な有効数字の数です。

#include <iomanip>

void doSomething(float t)
{
    ostringstream stream; 
    stream << std::setprecision(4)  << t;
    cout <<  stream.str();
}
于 2010-09-20T04:49:48.140 に答える
2

科学表記法の代わりに固定小数点が必要な場合は、次を使用しますstd::fixed

stream << std::fixed << t;

さらに、前述のように精度を設定することもできます。

于 2010-09-20T05:25:53.643 に答える
0

setprecisionを使用します。

stream << setprecision(5) <<t ;

これで、文字列stream.str()は必要な精度になります。

于 2010-09-20T04:57:31.160 に答える