头文件:#include <iomanip>
注:set后,在后面所有的输出都是管用的,所以测试一个,需注释其他的。
1.
//输出固定小数
double t=221.0;
cout<<fixed<<setprecision(3)<<t<<endl;
输出:221.000
2.
//对齐,在屏幕上整齐输出
double t=221.113;
cout<<setw(8)<<t<<endl;//输出' 221.000'有空格,自动补全8位
输出:空格221.113,会补空格,使长度为8
3.
//这个setiosflags有点子奇怪,left+right:都左对齐,left+left:前左对齐,后右对齐,没懂
double values[]={1.23,35.36,653.7,4358.24};
char *names[]={"Zoot","Jimmy","Al","Stan"};
for(int i=0;i<4;i++)
cout
<<setiosflags(ios_base::left)
<<setw(6)<<names[i]
<<resetiosflags(ios_base::left)
<<setw(10)<<values[i]
<<endl;
输出:
4.
//如何输出有效位数固定的,例如数据:55.1 7 1.23
//在有效位数为4时,输出为:55.10 7.000 1.230
//setfill('0')+setw会在前面补0, cout<<setprecision(5)<<t<<endl;对整数7不会补小数
//下面这种可以科学计数的效果,算是接近目标了
double values[]={1.23,35.36,653.7,4358.24};
char *names[]={"Zoot","Jimmy","Al","Stan"};
cout<<setiosflags(ios_base::scientific);// 小数类型:fixed
for(int i=0;i<4;i++)
cout<<setiosflags(ios_base::left)
<<setw(6)<<names[i]
<<resetiosflags(ios_base::left)
<<setw(10)<<setprecision(1)
<< values[i]<<endl;
输出:
5.
想输出:123.4 7.000 45.20
目前还没有找到可以直接没有e的,但是固定长度(有效位数非小数的)L输出........ 可能确实需要判断整数的位数M,然后采用<<fixed<<setprecision(L-M)这种?也应该是可以的