在输出(打印)浮点数(float,double)时,有时候我们不希望输出小数点后太多位,例如对于圆周率pi=3.1415926~,我们希望输出3.14,这个时候就需要控制输出精度了。
我们知道,在C风格的输出中,可以直接在printf()的占位符中设置
printf("%.2f",pi) //输出3.14
printf("%.3f",pi) //输出3.142
那么C++风格的cout该如何设置呢?这里需要用到C++的标准库iomanip,“io”代表input-output,"manip"代表manipulate(控制),顾名思义,就是输入输出控制的库。我们用一段代码展示其具体用法
#include<iomanip>
...
cout<<setiosflags(ios::fixed); //保证setprecision()是设置小数点后的位数。
cout<<setprecision(2) << pi << endl; //输出3.14
cout<<pi<<endl; //输出3.14
上述代码中,第一行包含头文件iomanip,第二行的作用是使得setprecision()控制的是小数点后的位数,若这一行被注释,则setprecision()控制的是整个浮点数的精度(即后面两个cout都输出3.1),第四行cout的输出结果表明setprecision()会对之后的cout产生作用。
以上讨论的cout<<的情况,对于ofstream<<同样适用。