输出:保留两位小数
问题
已知a=0.20001,输出:0.20
思路
setprecision:功能是控制输出流显示浮点数的有效数字个数,注意是有效数字。如果和fixed合用的话,可以控制小数点后面有几位。
这下这知道为什么输出是0.2了吧,必须是输出有效数字,后面的0要省略。如果a=0.21001,直接用就输出是0.21。
为了得到0.20,在这里就要用到fixed了。
代码
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
float a = 0.20001;
cout.setf(ios::fixed);
cout << "a=" <<fixed<< setprecision(2) << a <<endl; //输出结果为a=0.20
cout.unsetf(ios::fixed);
cout << "a=" << setprecision(2) << a <<endl; //输出结果为a=0.2
return 0;
}
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()
:这是一个格式控制函数,它有很多参数,可以实现不同的输出操作
在这里主要用到其中两个: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
这样我们就能完全控制小数位数的输出了。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。