控制cout输出浮点数的精度

在输出(打印)浮点数(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<<同样适用。

推荐阅读更多精彩内容