我有一个字符串:(66)

然后我将其转换为double并进行一些数学运算:atof(t.c_str()) / 30

然后将其转换回字符串:string s = boost::lexical_cast<string>(hizdegerd)

问题是,当我在标签上显示它时,它变成了20000000。

我已经尝试了一切。 sprintf等

我只想显示一点之后的数字。

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

    txtOyunHiz->SetValue(hizdegerd);

    oncekideger = hizdegerd;
}

最佳答案

我想我会将格式包装到一个函数模板中,如下所示:

#include <iostream>
#include <sstream>
#include <iomanip>

template <class T>
std::string fmt(T in, int width = 0, int prec = 0) {
    std::ostringstream s;
    s << std::setw(width) << std::setprecision(prec) << in;
    return s.str();
}

int main(){
    std::string s = fmt(66.0 / 30.0, 2, 2);
    std::cout << s << "\n";
}

08-16 09:15