C++保留小数问题
由于在做题的时候设计到输出格式的问题,省的每次都去找,所以自己稍微记录一下
主要使用工具:#include中的setprecision() 和 setiosflags()
使用方法:
setprecision()
顾名思义:就是设定精度。用来控制输出的数的位数(从左到右的),自动四舍五入。且不保留小数后的0。比如:
double pi = 3.1415926000;
语句 | 输出 |
---|---|
cout<<setprecision(1)<<pi<<endl; | 3 |
cout<<setprecision(2)<<pi<<endl; | 3.1 |
但是这种形式如果有多位数,会采用科学计数法来表示,比如
double n=123.65
cout<<setprecision(2)<<n<<endl;
输出1.2e02
所以如果整数部分不确定,或者要求末尾保留0的时候,那我们就无法准确保留适当的小数位数,因此我们需要另一个函数:
setiosflags():
这是一个格式控制函数,它有很多参数,可以实现不同的输出操作,详见:https://blog.csdn.net/qq_40688707/article/details/79502225
在这里主要用到其中两个:fixed 和 showpoint。
首先说fixed,以定点方式显示实数,即显示整数部分。举个栗子:
double pi = 3.1415926000;
语句 | 输出 |
---|---|
cout<<setprecision(1)<<pi<<endl; | 3.1 |
cout<<setprecision(2)<<pi<<endl; | 3.14 |
cout<<setprecision(10)<<pi<<endl; | 3.1415926 |
double n=123.65
cout<<setprecision(1)<<n<<endl;
输出123.6
可见此时setprecision()已经是只控制小数位数了,但是:它仍然不能保留0。这时就有了showpoint。
还是那个例子:
cout<<setiosflags(ios::fixed|ios::showpoint)<<setprecision(10)<<pi<<endl;
输出 3.1415926000
这样我们就能完全控制小数位数的输出了。