c ++ setprecision操纵器如何工作?

时间:2017-11-28 16:57:24

标签: c++

有人可以解释为什么输出这段代码:

#include <iostream>
#include <string>
#include <iomanip>
int main()
{
  double y = 123.456;
  std::cout << std::setiosflags(std::ios::left)
            << std::setfill('*')
            << std::setw(8)
            << std::setprecision(3)
            << y;
}

就是这样:

123*****

1 个答案:

答案 0 :(得分:1)

在默认浮点表示法中,精度字段指定要计算的有意义数字的最大数量,总计算小数点之前和小数点之后的数字。请注意,它不是最小值,因此如果数字的显示位数少于精度,则不会使用尾随零填充显示的数字。

固定科学表示法中,精确字段准确指定小数点后要显示的位数,即使这包括尾随小数零。在这种情况下,小数点前的位数无关紧要。

感谢@UKMonkey。

cout<<setprecision(5)<<1234.567;
    // output will be : 1234.5