获取 cout 的精度

5

我可以使用以下方式设置cout输出的精度:

cout.precision(precision_value);

我该如何获取由cout使用的精度值?我在描述中找不到其他相关函数。
我所面临的相关问题是如何仅更改某部分代码的cout精度(因此需要在之后重置为确切的先前值)。
我尝试过:
//save original cout flags
std::ios_base::fmtflags coutFlags = cout.flags();

cout.precision(1);
cout.setf(ios::fixed);

 // code

cout.flags(coutFlags);

但这并不起作用。


为什么不使用一个变量并每次更改它呢? - Ariel Pinchover
http://en.cppreference.com/w/cpp/io/ios_base/precision - Some programmer dude
cout.setf(ios::fixed); 会覆盖 所有 标志,而不仅仅是感兴趣的标志。我最近也犯了同样的错误:istringstream not honoring base? - jww
2个回答

12

这个函数是重载的。两者重载返回函数调用前设置的精度。你可能想使用 cout.precision() 来查询它。

要保存并稍后再设置:

auto old_precision = cout.precision(temp_precision);
// do stuff
cout.precision(old_precision);

哦,我完全忘记了返回值。一直在寻找另一个函数。谢谢。 - klm123

4

使用函数precision()

int main() {
  std::cout << std::cout.precision() << std::endl;
  return 0;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接