我有一个字符串:(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";
}