(超全,超经典)c++中的小数取法。关于setprecision(),fixed,showpoint,setw(),setfill()函数的用法与心得
首先要说的是以上函数皆需要使用头文件<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)
上一篇: 判断是几位正小数
下一篇: JS精确到指定位数的小数