0

私は文字列を持っています: (66)

次に、それを double に変換し、いくつかの計算を行います。atof(t.c_str()) / 30

次に、それを文字列に変換します。string s = boost::lexical_cast<string>(hizdegerd)

問題は、ラベルに表示すると 2,20000001 になることです。

私はすべてを試しました。sprintf など

ポイントの後に1桁だけ表示したい。

hizdegerd = atof(t.c_str()) / 30;
char buffer [50];
hizdegerd=sprintf (buffer, "%2.2f",hizdegerd);
if(oncekideger != hizdegerd)
{

    txtOyunHiz->SetValue(hizdegerd);

    oncekideger = hizdegerd;
}
4

3 に答える 3

0

この変換方法を使用するstringと、精度に必要な桁数のみが考慮されます。

ostringstream a;
a.precision(x); // the number of precision digits will be x-1
double b = 1.45612356;
a << b;
std::string s = a.str();
于 2013-07-05T12:27:28.947 に答える