1.题目描述:输入一个浮点数,要求能输出一个浮点数,并保留三位小数 。
比如输入 1.2347,要求显示结果为1.235
#include <iostream>
#include<iomanip>
using namespace std;
int main() {
double a;
cin>>a;
cout<<fixed<<setprecision(3)<<a;
}
这里涉及到怎样对输出流进行相应的设置,所以要用到<iomanip>头文件,这里对这个头文件进行简单介绍。
头文件#include<iomanip>是流控制头文件,就像C里面的格式化输出一样
下面是它里面的相关函数以及对应的作用
dec 设置整数为十进制
hex 设置整数为十六进制
oct 设置整数为八进制
setbase(n) 设置整数为n进制(n=8,10,16)
setfill(c) 设置字符填充,c可以是字符常量或字符变量
setprecision(n) 设置浮点数的有效数字为n位
setw(n) 设置字段宽度为n位
setiosflags(ios::fixed) 设置浮点数以固定的小数位数显示
setiosflags(ios::scientific) 设置浮点数以科学计数法表示
setiosflags(ios::left) 输出左对齐
setiosflags(ios::right) 输出右对齐
setiosflags(ios::skipws) 忽略前导空格
setiosflags(ios::uppercase) 在以科学计数法输出E与十六进制输出X以大写输出,否则小写。
setiosflags(ios::showpos) 输出正数时显示"+"号
setiosflags(ios::showpoint) 强制显示小数点
resetiosflags() 终止已经设置的输出格式状态,在括号中应指定内容
应用示例:
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int n = 18;
cout << "n = " << n << endl;
cout << oct << "八进制n: " << n << endl;
cout << dec << "十进制n: " << n << endl;
cout << hex << "十六进制n: " << n << endl;
cout << setbase(8) << "八进制n: " << n << endl;
cout << setbase(10) << "十进制n: " << n << endl;
cout << setbase(16) << "十六进制n: " << n << endl;
//setfill()设置字符填充,c可以是字符常量或字符变量
//setw()设置字符宽度
cout<<setfill('*') << setw(10) << n<<endl;
//setprecision()设置浮点数的有效数字为n位
double x = 1.234568;
cout << "有效位数为4: "<<setprecision(4) << x << endl;
//设置浮点数以固定的小数位数显示
cout << "保留四位小数: "<<fixed << setprecision(4) << x << endl;
//输出右对齐
cout <<"右对齐: "<<setw(15) << setprecision(4) << right << x << endl;
//输出左对齐
cout <<"左对齐: "<<setw(15) << setprecision(4) << left << x << endl;
}
程序运行结果: