控制符在<iomanip>头文件里
一、设置显示小数精度 :setprecision()
float A=3.1234;
默认有效位为6位,steprecision(3)→设置有效位为3位 【3.12】
可以与fixed搭配用,cout<<fixed<<setprecision(3)<<A; 设置小数点后面的位数 【3.123】
具有长时间有效性:
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
double A = 22.0 / 7;
cout << A << endl; //直接·输出
cout << setprecision(0) << A << endl // c++中最小有效数为1
<< setprecision(1) << A << endl
<< setprecision(2) << A << endl;
cout << A <<"(2)"<< endl;
cout << setprecision(3) << A << endl;
cout << setprecision(4) << A << endl;
cout << A << "(4)" << endl;
cout << fixed<<setprecision(8) << A << endl;
cout << scientific << A << endl; // scientific是指数表示
cout << setprecision(6); // 重新设置成原默认设置
/*
3.14286
3
3
3.1
3.1(2)
3.14
3.143
3.143(4)
3.14285714
3.14285714e+00
*/
return 0;
}
二、设置值的输出宽度:setw()
①、如果一个值的字符比咱们设置的多,就显示所有字符,
比咱们设置的少,就按照咱们的设置在前面补充空格
②、stew()设置的仅仅影响下一个数值输出,对再后面的数值无影响
double B = 3.14156;
cout << setw(4) << B<<endl; // 设置的B小,按B输出
cout << setw(6)
<< 10 // 10,只占俩,前面补4个空格
<< 20 // 不对20 起作用,紧跟 10 后
<<setw(6)
<<30
<< endl;
//结果为:
/*
3.14156
1020 30
*/
三、输出八进制,十六进制
进制 | 八进制 | 十进制 | 十六进制 |
对应控制符 | oct | dec | hex |
int C = 1001;
cout << "八进制:" << oct << C << endl;
cout << "十进制:" << dec << C << endl;
cout << "十六进制:" << hex << C << endl;
cout << "十六进制:" << hex <<uppercase<< C << endl;
uppercase 可以控制十六进制数的大写输出
运行结果:
八进制:1751
十进制:1001
十六进制:3e9
十六进制:3E9
四、设置填充字符 setfill()
cout << setfill('*')
<< setw(2) << 10 << endl
<< setw(3) << 10 << endl
<< setw(4) << 10 << endl
<< " pp" << endl
<< setw(8) << "abc" << endl;
cout << setfill(' '); //恢复默认设置
结果:
10
*10
**10
pp
*****abc
setfill() 控制 的是setw设置出来的空格,对于咱们输入字符串中的空格,无法修改
五、左右对齐输出 left 和 right
cout << right
<< setw(5) << 1
<< setw(5) << 2
<< setw(5) << 3 << endl;
cout << setw(8) << 1001 << endl;
cout<<left
<< setw(5) << 1
<< setw(5) << 2
<< setw(5) << 3 << endl;
说明,left 和 right 也是具有持续性的
六、强制显示小数点和符号 showpoint、showpos
showpoint 具有持续性,后面的都会强制显示小数
showpos 是可以让数值显示正负(+-),也是具有持续性
cout << 10.0 / 5 << endl
<< showpoint << 10.0 / 5 << endl
<< 10.0 / 5 << endl;
cout << 10.0 / 5 << endl;
cout << "________________________" << endl;
cout << 10 << " " << -20 << endl;
cout << showpos << 10 << " " << -20 << endl;