如何使用“ostream”指定小数位数

da5*_*5id 2 c++ ostream

我对无法使用所需的小数位数打印(到标准输出)的双精度数感到有点沮丧。

我当前的代码如下所示:

void SomeFunction(vector<string> argv, ostream& oss){
   SomeClass ClassMembers ;
   string directory = argv.at(2) ;
   // specialized code that opens "FileName", defined by "directory"
   ClassMembers.GetValues(FileName) ;
   oss << ClassMembers.SomeNumber << endl ;
}
Run Code Online (Sandbox Code Playgroud)

这是总体思路。问题是我无法使用以下方法将 ClassMember.SomeNumber 打印到小数点后 5 位:

oss << precision(5) ;
Run Code Online (Sandbox Code Playgroud)

请注意,“SomeNumber”是声明为 double 的类成员。

它总是给出在 FileName 正文中找到的已解析数字的小数位数。

我究竟做错了什么?

谢谢!

Gur*_*gen 5

oss.精度(5); 根据此页面,应该可以做到这一点。

所以你想做的是这样的:

oss.precision(5);
oss << ClassMembers.SomeNumber << endl ;
Run Code Online (Sandbox Code Playgroud)

请注意,“精度”意味着要显示的最大位数(不是最小值,因此它不包括前导/尾随零或空格)。

如果您希望使用精确的小数位数,请预先使用std::fixed,如下所示:

oss.precision(5);
oss << std::fixed << ClassMembers.SomeNumber << endl;
Run Code Online (Sandbox Code Playgroud)