我希望能够以十进制输出,而不是在我的代码中输出所有情况。
如果我有122041e + 08,那么我希望它显示为122041000
如果我有4.6342571e + 06,那么我希望它显示为4634257.1
......等等。
使用我的代码,4.6342571e + 06的输出为4634257.100000
void conversion(double counts)
{
std::ostringstream ss;
ss << std::fixed << counts;
std::cout << ss.str() << " MeV";
}
有人可以向我解释为什么它会在结尾添加0,如果可以删除它们。
答案 0 :(得分:4)
您可以使用std::setprecision
。
答案 1 :(得分:2)
输出字符串流中有一个名为precision的方法。您可以使用它来调整逗号后的位数。它默认为6,缺少的数字用0填充(因此名称固定)。要显示4634257.1
,请将精度设置为1:
void conversion(double counts)
{
std::ostringstream ss;
ss.precision(1);
ss << std::fixed << counts;
std::cout << ss.str() << " MeV";
}
答案 2 :(得分:0)
它添加了零,因为你(在不知不觉中)要求它们。默认精度为6,在固定格式中,这意味着小数点后的6位数(无论之前有多少)。根据用于输出的格式,精度具有不同的含义。 (这听起来不是很正交,但一旦你知道会发生什么,在实践中效果很好。)