我对无法使用所需的小数位数打印(到标准输出)的双精度数感到有点沮丧。
我当前的代码如下所示:
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 正文中找到的已解析数字的小数位数。
我究竟做错了什么?
谢谢!
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)
| 归档时间: |
|
| 查看次数: |
3077 次 |
| 最近记录: |