前言:
配合ios_base::sync_with_stdio(false);cin.tie(NULL); cout.tie(NULL);的加速效果,但不能混合使用cin和printf的副作用,从而学习c++的格式化输出!
目录
1.前置补0:
头文件:iomanip
输出控制符:setw(int)
理解:设置输出宽度。如果宽度大于说设的宽度,全部输出。
作用范围:仅对后续的<<生效一次。要多次使用。
输出控制符setfill(char)
理解:设置填充的字符,不写参数的话默认是空格。
作用范围:自设置之后的所有<<,直到下一个setfill才更改。
#include<iomanip>
#include<iostream>
using namespace std;
int main(){
cout<<setfill('0');
cout<<setw(2)<<2;
cout<<setfill('/');
cout<<setw(2)<<5;
}
2.设置有效位数的保留:
头文件:iomanip
输出控制符:setprecision(int)
理解:设置保留有效位数。
作用范围:自设置之后的所有<<,直到下一个setprecision才更改。
#include<iomanip>
#include<iostream>
using namespace std;
int main(){
cout<<setprecision(4);
cout<<3.565455555;//3.565
}
3.保留位数:
头文件:iomanip
输出控制符:fixed
理解:设置保留位数,默认保留6位小数
作用范围:自设置之后的所有<<,直到下一个fixed才更改。
注意:fixed要配合setprecision使用
#include<iomanip>
#include<iostream>
using namespace std;
int main(){
cout<<fixed<<setprecision(4);
cout<<3.565455555;//3.5655
}
4.向上取整,向下取整,四舍五入:
函数ceil(double),函数floor(double),函数round(double);
头文件:cmath
#include<iomanip>
#include<iostream>
#include<cmath>
using namespace std;
int main(){
cout<<ceil(3.565455555)<<endl;//4
cout<<round(3.365455555)<<endl;//3
cout<<floor(3.565455555)<<endl;//3
}