有人可以解释为什么输出这段代码:
#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*****
答案 0 :(得分:1)
在默认浮点表示法中,精度字段指定要计算的有意义数字的最大数量,总计算小数点之前和小数点之后的数字。请注意,它不是最小值,因此如果数字的显示位数少于精度,则不会使用尾随零填充显示的数字。
在固定和科学表示法中,精确字段准确指定小数点后要显示的位数,即使这包括尾随小数零。在这种情况下,小数点前的位数无关紧要。
感谢@UKMonkey。
cout<<setprecision(5)<<1234.567;
// output will be : 1234.5