2
double value;
std::ostringstream s;
s << std::fixed << std::setprecision(3) << value;

当在tovalue范围内徘徊时,在和之间闪烁。有没有一种干净的方法来抑制减号,它只表示不相关的噪音小数点后十位?-1.0e-141.0e-14s"0.000""-0.000"

(不太一般的情况是cout << ...。)

避免输出负零的最佳方法是什么?解决表面问题。它的答案是在传递给 <<之前四舍五入到正确的有效数字位数,与“如果所有数字都为零,则只需删除 frickin' 减号”相比,需要大量计算。

4

1 回答 1

0

即使没有任何东西<iomanip>可以调整实际的流,我们至少可以不依赖传递给的值setprecision(),就像这样:

const std::string& t = s.str();
return t.find_first_of("123456789") == t.npos && t[0] == '-' ?
  t.substr(1) : t;

如果没有找到 1..9 中的数字,则所有数字都必须为 0。

此外,如果它以减号开头,则跳过该字符。

于 2014-02-03T21:59:05.010 回答