C++中setiosflags( ) 的用法

setiosflags( ios::fixed ),头文件为:include<iomanip>.

在遇到要计算浮点数且希望能控制其输出、精度、小数点后的位数等时,用setiosflags( ios::fixed )来控制。

 

1. setprecision( )

使用setprecision(n)可控制输出流显示浮点数的数字个数。C++默认的流输出数值有效位是6setprecision(n)就是输出n个数,会有四舍五入。

#include<iostream>

#include<iomanip>

#include<cmath>

using namespace std;

int main() {

    double s=20.7843000;

    cout << s << endl;

    cout << "setprecision( 1 )"<< setprecision( 1 )<< s << endl;

    cout << "setprecision( 2 )"<< setprecision( 2 )<< s << endl;

    cout << "setprecision( 3 )"<< setprecision( 3 )<< s << endl;

    cout << "setprecision( 4 )"<< setprecision( 4 )<< s << endl;

    cout << "setprecision( 5 )"<< setprecision( 5 )<< s << endl;

    cout << "setprecision( 6 )"<< setprecision( 6 )<< s << endl;

    cout << "setprecision( 7 )"<< setprecision( 7 )<< s << endl;

    cout << "setprecision( 8 )"<< setprecision( 8 )<< s << endl;

return 0;

}

输出:

20.7843

setprecision( 1 )2e+01

setprecision( 2 )21

setprecision( 3 )20.8

setprecision( 4 )20.78

setprecision( 5 )20.784

setprecision( 6 )20.7843

setprecision( 7 )20.7843

setprecision( 8 )20.7843

可见,小数部分末尾为0时,是输不出来的!

2. setiosflags(ios::fixed)

setprecision(n)setiosflags(ios::fixed)合用,可以控制小数点右边的数字个数。

#include<iostream>

#include<iomanip>

#include<cmath>

using namespace std;

int main() {

    double s=20.7843000;

    cout << s << endl;

    cout << setiosflags( ios::fixed );

    cout << "setprecision( 1 )"<< setprecision( 1 )<< s << endl;

    cout << "setprecision( 2 )"<< setprecision( 2 )<< s << endl;

    cout << "setprecision( 3 )"<< setprecision( 3 )<< s << endl;

    cout << "setprecision( 4 )"<< setprecision( 4 )<< s << endl;

    cout << "setprecision( 5 )"<< setprecision( 5 )<< s << endl;

    cout << "setprecision( 6 )"<< setprecision( 6 )<< s << endl;

    cout << "setprecision( 7 )"<< setprecision( 7 )<< s << endl;

    cout << "setprecision( 8 )"<< setprecision( 8 )<< s << endl;

return 0;

}

输出:

20.7843

setprecision( 1 )20.8

setprecision( 2 )20.78

setprecision( 3 )20.784

setprecision( 4 )20.7843

setprecision( 5 )20.78430

setprecision( 6 )20.784300

setprecision( 7 )20.7843000

setprecision( 8 )20.78430000

结果全部正确。

3. setiosflags(ios::fixed|ios::showpoint)

setprecision( )的精度为0的时候,有showpoint,结果就会显示小数点,没showpoint,就不显示小数点。

#include<iostream>

#include<iomanip>

#include<cmath>

using namespace std;

int main() {

    double s=20.7843000;

    cout << s << endl;

    cout << setiosflags( ios::fixed);

    cout << "setprecision( 0 )"<< setprecision( 0 )<< s << endl;

    cout << "setprecision( 1 )"<< setprecision( 1 )<< s << endl;

    cout << "setprecision( 2 )"<< setprecision( 2 )<< s << endl;

    cout << "setprecision( 3 )"<< setprecision( 3 )<< s << endl;

    cout << setiosflags( ios::fixed|ios::showpoint );

    cout << "setprecision( 0 )"<< setprecision( 0 )<< s << endl;

    cout << "setprecision( 1 )"<< setprecision( 1 )<< s << endl;

    cout << "setprecision( 2 )"<< setprecision( 2 )<< s << endl;

    cout << "setprecision( 3 )"<< setprecision( 3 )<< s << endl;

return 0;

}

输出:

20.7843

setprecision( 0 )21

setprecision( 1 )20.8

setprecision( 2 )20.78

setprecision( 3 )20.784

setprecision( 0 )21.

setprecision( 1 )20.8

setprecision( 2 )20.78

setprecision( 3 )20.784

  • 137
    点赞
  • 421
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值