见如下代码:

#include<iostream>
#include<iomanip>
using namespace std;
int main(){
    double a=123.456789012345;
    //cin>>a;
    cout<<a<<endl;//结果是123.456,以十进制小数格式输出,默认6位有效数字(当a现在的有效数字大于6时,否则输出实际有效位数)
    cout<<setprecision(9)<<a<<endl;//结果是123.456789,同上,修改有效数字为9位
    cout<<setprecision(6);
    cout<<a<<endl;//结果还是123.456,以十进制小数格式输出,但是保留6位有效数字
    cout<<setiosflags(ios::fixed);
    cout<<a<<endl;//结果是123.456789,因为setiosflags(ios::fixed)使setprecision(n)中n的含义由有效数字变成了小数点后位数
    cout<<setprecision(8);
    cout<<a<<endl;//结果是123.45678901,说明<setiosflags(ios::fixed)的效果持续存在//打印数字会四舍五入//四舍五入可以利用整数截断,先对小数+0.5再符指3给一个整型变量
    cout<<setfill('#')<<setw(10)<<"QAQ"<<endl;//结果是#######QAQ,setfill('#')是设置填充字符,不用此函数则默认用空格
    cout<<setw(12)<<"QWQ"<<endl;//结果是#########QWQ,setw的效果只对其后一个输出项有效,而setfill的效果持续
    cout<<setw(10)<<setfill('@')<<"QAQ"<<endl;//结果是@@@@@@@QAQ,setw和setfill不分先后,其他控制函数应该同理
    cout<<setw(12)<<"QWQ"<<endl;//结果是@@@@@@@@@QWQ
}