質問

OstringStreamを使用して、FloatからC ++文字列への変換に関する問題があります。これが私の線です:

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

tが値-0.89999の場合、それは-0.9に丸められますが、値が0.0999以下である場合、これよりも1.754E -7が少ない場合、丸めずに印刷するだけです。これの解決策は何ですか。

役に立ちましたか?

解決

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

例えば

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

cout<<stream.str();

他のヒント

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

#include <iomanip>

void doSomething(float t)
{
    ostringstream stream; 
    stream << std::setprecision(4)  << t;
    cout <<  stream.str();
}

科学表記法の代わりに固定点が必要な場合は、使用してください std::fixed:

stream << std::fixed << t;

さらに、前述のように精度を設定することをお勧めします。

使用する SetPrecision:

stream << setprecision(5) <<t ;

さて、あなたの文字列 stream.str() 必要な精度になります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top