小数点输出精度控制问题

 

 

setf()是追加标志字的函数,而flags()是设置标志字

 

fixed标志是以定点形式显示浮点数

 

 

当有fixed标志时,说明数据按一定的位数输出,否则去掉fixed标志后,数据按原位输出---即小数最后面的0不显示

 

因此,使用时有两种情况:

 

(1)原位输出,这时应去掉fixed标志: cout。unsetf(ios::fixed)

 

     如0.1 便会输出0.1

 

(2)设置小数点后的输出位数

 

        分两步:

                      第一步---------   设置定位输出 cout。setf(ios::fixed)

 

                      第二步---------   设置输出精度 cout.precision(4)

 

 

如下面程序:

 

 

#include <iostream.h> #include <iomanip.h> void main(void) { cout.setf(ios::fixed); cout<<setprecision(2)<<(float)0.1<<endl;//输出0.10 cout.unsetf(ios::fixed); cout<<setprecision(2)<<(float)0.1<<endl; //输出0.1 }

 

 

 

 

fout<<rs<<'/t'<<'/t'<<dr_mean<<"("; fout.setf(ios::fixed); fout<<dr_sd<<")"<<endl; fout.unsetf(ios::fixed); fout<<'/t'<<'/t'<<mature_mean<<"("; fout.setf(ios::fixed); fout.precision(4); fout<<mature_sd<<")"<<endl; fout.unsetf(ios::fixed); fout<<'/t'<<'/t'<<cost_mean<<"("; fout.setf(ios::fixed); fout.precision(6); fout<<cost_sd<<")"<<endl; fout.unsetf(ios::fixed);

 

输出结果如下:

 

0.998836---原位 (0.000000)---六位

2746.2---原位

(99.7445)--四位

3.152--原位

(0.015522)--六位

 

 

 

 

 

 

 

 

 

 
 
 
 
 
 
   

 

 

 

 

 

 

 

 

其他参考资料如下:

 

/*关于浮点数的格式*/ #include <iostream.h> void main() { float f=2.0/3.0,f1=0.000000001,f2=-9.9; cout<<f<<' '<<f1<<' '<<f2<<endl; //正常输出 cout.setf(ios::showpos); //强制在正数前加+号 cout<<f<<' '<<f1<<' '<<f2<<endl; cout.unsetf(ios::showpos); //取消正数前加+号 cout.setf(ios::showpoint); //强制显示小数点后的无效0 cout<<f<<' '<<f1<<' '<<f2<<endl; cout.unsetf(ios::showpoint); //取消显示小数点后的无效0 cout.setf(ios::scientific); //科学记数法 cout<<f<<' '<<f1<<' '<<f2<<endl; cout.unsetf(ios::scientific); //取消科学记数法 cout.setf(ios::fixed); //按点输出显示 cout<<f<<' '<<f1<<' '<<f2<<endl; cout.unsetf(ios::fixed); //取消按点输出显示 cout.precision(18); //精度为18,正常为6 cout<<f<<' '<<f1<<' '<<f2<<endl; cout.precision(6); //精度恢复为6 } 操纵算子: /*关于浮点数的格式*/ #include <iomanip.h> void main() { float f=2.0/3.0,f1=0.000000001,f2=-9.9; cout<<f<<' '<<f1<<' '<<f2<<endl; //正常输出 cout<<setiosflags(ios::showpos); //强制在正数前加+号 cout<<f<<' '<<f1<<' '<<f2<<endl; cout<<resetiosflags(ios::showpos); //取消正数前加+号 cout<<setiosflags(ios::showpoint); //强制显示小数点后的无效0 cout<<f<<' '<<f1<<' '<<f2<<endl; cout<<resetiosflags(ios::showpoint); //取消显示小数点后的无效0 cout<<setiosflags(ios::scientific); //科学记数法 cout<<f<<' '<<f1<<' '<<f2<<endl; cout<<resetiosflags(ios::scientific); //取消科学记数法 cout<<setiosflags(ios::fixed); //按点输出显示 cout<<f<<' '<<f1<<' '<<f2<<endl; cout<<resetiosflags(ios::fixed); //取消按点输出显示 cout<<setprecision(18); //精度为18,正常为6 cout<<f<<' '<<f1<<' '<<f2<<endl; cout<<setprecision(6); //精度恢复为6 }

 

 

 

 

 

 

参考资料:

http://zhidao.baidu.com/question/9029358.html

 

http://zhidao.baidu.com/question/77286598.html

 

http://bbs.bccn.net/thread-150172-1-1.html

你可能感兴趣的:(ios,float)