7

我希望能够在我的代码中的所有情况下输出十进制而不是科学的。

如果我有 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 以及是否可以删除它们。

4

3 回答 3

6

您可以使用std::setprecision.

于 2012-02-23T10:26:06.220 回答
2

在您的输出字符串流中有一种方法称为精度。您可以使用它来调整逗号后的位数。它默认为 6,缺少的数字用 0 填充(因此名称固定)。为了实现4634257.1被显示,设置精度为1:

void conversion(double counts)
{
  std::ostringstream ss;
  ss.precision(1);
  ss << std::fixed << counts;
  std::cout << ss.str() << " MeV";
}
于 2012-02-23T10:37:43.303 回答
0

它添加了零,因为您(在不知不觉中)要求它们。默认精度为 6,采用固定格式,表示小数点后 6 位(不管之前有多少位)。根据用于输出的格式,精度具有不同的含义。(这听起来不是很正交,但在实践中效果很好,一旦你知道会发生什么。)

于 2012-02-23T10:41:00.383 回答