C语言里可以用printf() %f 来实现浮点数的格式化输出
C++cout也可以的 对于double 类型只能输出6位 如果整数位大于6 位 就科学计数法了 所以说还是scanf printf好啊
iomanip是I/O流 控制头文件,就像printf的格式化输出一样
以下是一些常用的:
dec 置基数为10 相当于"%d"
hex 置基数为16 相当于"%X"
oct 置基数为8 相当于"%o"
setfill(c) 设填充字符为c
setprecision(n) 设显示小数精度为n 位
setw(n) 设域宽为n个字符
setioflags(ios::fixed) 固定的浮点显示
setioflags(ios::scientific) 指数表示
setioflags(ios::left) 左对齐
etiosflags(ios::right) 右对齐
setiosflags(ios::skipws 忽略前导空白
setiosflags(ios::uppercase) 16进制数大写输出
setiosflags(ios::lowercase) 16进制小写输出
setiosflags(ios::showpoint) 强制显示小数点
setiosflags(ios::showpos) 强制显示符号
用于控输出格式的流成员函数及控制符
流成员函数 | 作用相同的控制符 | 作用 |
---|---|---|
precision(n) | setprecision(n) | 设置实数的精度为n位 |
width(n) | setw(n) | 设置字段宽度为n位 |
fill(c) | setfill(c) | 设置填充宇符c |
setf(ios::state) | setiosflags(ios::state) | 设置输出格式状态,括号中应给出格式状态,内容与控制符setiosflags括号中的内容相同,如表2所示 |
unsetf(ios::state) | resetioflags(ios::state) | 终止已设置的输出格式状态,在括号中应指定内容 |
给个实例
#include<iostream>//对于double 类型cout 只能输出前 6位
#include<iomanip>//是I/O流控制头文件,就像printf的格式化输出一样。
using namespace std;
double d=12.23456;
int main()
{
int b=1000000;
cout<<b<<endl;
double t=101111.01;
cout<<t<<endl;
cout<<d<<endl;
cout<<setprecision(3)<<d<<endl;
cout<< setiosflags(ios::fixed)<<d<<endl;
cout<<setiosflags(ios::fixed)<<setprecision(7)<<d<<endl;
return 0;
}