<iomanip>函数库相当于一个标准格式化输入输出的函数库。
//浮点数小数点保留位数设定
#include<iostream>
#include<iomanip>
#include<fstream>
int main(){
//前缀o表示八进制,前缀ox表示十六进制,不带前缀表示十进制
int a=123;
double pi=22.0/7.0;
//setbase(n)设置整数为n进制,
//oct八进制 dec十进制 hex十六进制
//setiosflags(ios::showbase)显示进制的前缀
//数值默认十进制显示输出
std::cout<<a<<std::endl;
std::cout<<"oct:"<<std::oct<<a<<std::endl;
std::cout<<"dec:"<<std::dec<<a<<std::endl;
std::cout<<"hex:"<<std::hex<<a<<std::endl;
//setprecision(n)设置浮点数的有效数字为n位
//有效位数默认为6位,即setprecision(6)会四舍五入
std::cout<<pi<<std::endl;
std::cout<<std::fixed<<std::setprecision(2)<<pi<<std::endl;
//setfill(n)设置字符填充,c可以是字符常数或字符变量
//setw(n)设置字段宽度为n位,若是实际宽度大于被设置的 setw失效,只针对第一个输出项有效默认右对齐
//setiosflags(ios::left)输出左对齐
//setiosflags(ios::right)输出右对齐
std::cout<<std::setfill('*')<<std::setw(20)<<std::setprecision(12)<<pi<<std::endl;
std::cout<<std::setfill('*')<<std::setw(20)<<std::setprecision(12)<<std::right<<pi<<std::endl;
std::cout<<std::setfill('*')<<std::setw(20)<<std::setprecision(12)<<std::left<<pi<<std::endl;
//setiosflags(ios::scientific) 设置浮点数科学技术法表示
std::cout<<std::scientific<<std::setprecision(12)<<pi<<std::endl;
std::cout<<std::scientific<<std::uppercase<<std::setprecision(12)<<pi<<std::endl;
//resetiosflags()终止已经设置的输出格式状态
std::cout<<std::setiosflags(std::ios::scientific)<<std::setprecision(12)<<pi<<" "<<std::resetiosflags(std::ios::scientific)<<pi<<std::endl;
return 0;
}
以上是库中常用函数,联想根源是浮点数保留确定位数
解决办法:cout<<fixed<<setprecision(2)<<a<<endl;
其中fixed是小数的意思,后面setprecision是指数字精度, 出现在fixed之后是指小数点后保留的位数。