亲宝软件园·资讯

展开

C++输出问题:保留两位小数

海轰Pro 人气:0

输出:保留两位小数

问题

已知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()

使用方法

顾名思义:就是设定精度。用来控制输出的数的位数(从左到右的),自动四舍五入。且不保留小数后的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的时候,那我们就无法准确保留适当的小数位数,因此我们需要另一个函数:

在这里主要用到其中两个: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

这样我们就能完全控制小数位数的输出了。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。

加载全部内容

相关教程
猜你喜欢
用户评论