欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

(超全,超经典)c++中的小数取法。关于setprecision(),fixed,showpoint,setw(),setfill()函数的用法与心得

程序员文章站 2022-07-15 09:34:58
...

首先要说的是以上函数皆需要使用头文件<iomanip>。

1.setw()是一个专门设置域宽的函数。值得注意的是它是右对齐,如果不够位数的话会在左边补空格。

double a=123.456789;
cout<<setw(2)<<a;

结果为12        

double a=123.456789;
cout<<setw(3)<<a;

结果为123

double a=123.456789;
cout<<setw(4)<<a;

结果为123.5

double a=123.456789;
cout<<setw(11)<<a;

结果为  123.456789        //前面有两个空格!!!

2.setfill()函数无法单独使用,仅用于填充,一般与setw()一起使用。

double a=123.456789;
cout<<setfill('@')<<setw(11)<<a;

结果为@@123.456789      //注意所填充的内容需要用‘  ’ 括住且仅能括住一个。

3.setprecision()函数与setw()函数类似,也属于域宽。不过如果不够的话并不加空格或填充。特别强调的是如果域宽范围内最后几位为0又恰好是小数,那么并不显示。

double a=123.456789;
cout<<setprecision(3)<<a;

结果为123

double a=123.456789;
cout<<setprecision(11)<<a;

 结果为123.456789

double a=123.4000;
cout<<setprecision(5)<<a;

 结果为123.4

如果再在这些语句后面加个两个语句:

cout<<1<<endl;
cout<<1.00900<<endl;

第一条 结果为:1

第二条 结果为:1.009        //承接setprecision(5)的这条规则语句。我们叫这个“承接效应”(我自己起的,别当真^.^)

4.fixed是一种非常方便的取小数的函数,有两种用法。

(1.在输出之前加上cout.setf(ios::fixed);

double a=98768.1000000000;
cout.setf(ios::fixed);
cout<<setprecision(4)<<a;

结果为98768.1000

double a=98768.1000000000;
cout.setf(ios::fixed);
cout<<a;     //默认输出为六位小数

结果为98768.100000

(2.在输出时加上fixed

double a=98768.1000000000;
cout<<setprecision(4)<<fixed<<a

结果为98768.1000

注意:fixed有承接效应。

5.showpoint函数与fixed一模一样用法,与setprecision()差不多的功能。

(1. 

cout.setf(ios::showpoint);
double a=98768.1000000000;
cout<<setprecision(4)<<a;

结果为9.877E+004

(2. 

double a=98768.1000000000;
cout<<showpoint<<setprecision(4)<<a;

结果为9.877E+004

double a=98768.1000000000;
cout<<showpoint<<setprecision(5)<<a;

结果为98768.         //多个点!!!

double a=98768.1000000000;
cout<<showpoint<<setprecision(7)<<a;

结果为98768.10

注意:showpoint有承接效应。

OK,以上就是五个函数的用法。有不懂的留言即可。(PS:这是我第一篇用五笔打的文章,打了三个小时。累死了T-T)

相关标签: C 小数