标签:
首先 #include <iomanip>
一:setprecision
作用:控制输出流显示浮点数的数字个数,setprecision(n)就是输出的n个数,会有四舍五入
double s=20.7843000;
cout<<setprecision(1)<<s<<endl;会输出2e+001,因为要输出一个数字,所以只有2
cout<<setprecision(2)<<s<<endl;会输出21。
cout<<setprecision(3)<<s<<endl;会输出20.8
cout<<setprecision(6)<<s<<endl;会输出20.7843
cout<<setprecision(7)<<s<<endl;会输出20.7843
cout<<setprecision(8)<<s<<endl;会输出20.7843
可见,小数部分末尾为0时,是输不出来的
要想输出来,就得用showpoint了。
如果再在这些语句后面加个两个语句:
cout<<1<<endl;
cout<<1.00800<<endl;
第一条输出:1。不是浮点型
第二条为:1.008。承接setprecision(8)的这条规则语句
如果直接有语句
int main()
{
cout<<1<<endl;
cout<<1.00<<endl;
}
第一条输出:1
第二条也为:1
二:setprecision与showpoint
在输出语句前声明:cout.setf(ios::showpoint);就行了
double s=20.7843000,
cout.setf(ios::showpoint);
cout<<setprecision(1)<<s<<endl;就会输出2.e+001,注意,2和e之间多了一个“.”
cout<<setprecision(2)<<s<<endl;会输出21.。多个点
cout<<setprecision(3)<<s<<endl;会输出20.8
cout<<setprecision(6)<<s<<endl;会输出20.7843
cout<<setprecision(7)<<s<<endl;会输出20.78430
cout<<setprecision(8)<<s<<endl;会输出20.784300
可见,就会输出想要的数据数目
如果再在这些语句后面加个两个语句:
cout<<1<<endl;
cout<<1.0080<<endl;
第一条输出:1 不是浮点型。
第二条也为:1.0080000 承接setprecision(8)的这条规则语句。
三:setprecision与fixed
如果想要保留几位小数,那setprecision就得与fixed一起用
在输出语句前声明:cout.setf(ios::fixed);
double s=20.7843909
cout.setf(ios::fixed);
cout<<setprecision(1)<<s<<endl;就会输出2.8
cout<<setprecision(2)<<s<<endl;会输出21.78。多个点
cout<<setprecision(3)<<s<<endl;会输出20.784
cout<<setprecision(6)<<s<<endl;会输出20.784391
cout<<setprecision(7)<<s<<endl;会输出20.7843909
cout<<setprecision(8)<<s<<endl;会输出20.78439090
如果也再在这些语句后面加个两个语句:
cout<<1<<endl;
cout<<1.008<<endl;
第一条输出:1
第二条为:1.00800000
就是承接了setprecision(8)的这条规则语句,是浮点型的都会保留8个小数。是整型的还是整型
语句也可以写成:cout<<fixed<<setprecision(2)<<s<<endl;
就算后面的语句没有写<<fixed,同样会按有<<fixed处理
cout<<fixed<<setprecision(2)<<s<<endl;
A:cout<<setprecision(7)<<s<<endl;
B:cout<<setprecision(8)<<s<<endl;
AB语句均会按保留7个,8个小数处理,不会再按有7或8个浮点数处理。
如果下面继续添加语句C:
cout<<1.008<<endl;也会保留8个小数
double s=20.7843909
cout<<setprecision(2)<<s<<endl;//输出21
cout<<fixed<<s<<endl;//输出20.78
cout<<setprecision(2)<<s<<endl;//输出21
cout<<showpoint<<s<<endl;//输出21.(有个点)
cout<<fixed<<s<<endl;//输出20.78391
cout<<showpoint<<s<<endl;//输出20.78391
cout<<setprecision(2)<<s<<endl;//输出21
cout<<fixed<<s<<endl;//输出20.78
cout<<showpoint<<s<<endl;//输出20.78
cout<<setprecision(2)<<s<<endl;//输出21
cout<<showpoint<<s<<endl;//21.(有个点)
cout<<fixed<<s<<endl;//20.78
C++ setprecision fixed showpoint
标签:
原文地址:http://www.cnblogs.com/Ro0kie/p/5476389.html