zoukankan      html  css  js  c++  java
  • cout输出控制——位数和精度控制

    刷到一道需要控制输出精度和位数的题目

    刚开始以为单纯使用 iomanip 函数库里的 setprecision 就可以,但 OJ 给我判了答案错误,后来一想这样输出并不能限制位数只能限制有效位数。

    比如说 0.000101000110

    用 setprecision(4) 答案是 0.000101 这里甚至把最后一位的有效数字 0 省略了!!

    后来了解到 fixed 关键字

    那么在这里若要控制小数点后 N 位 只要写成 

    cout << fixed << setprecision(N) 

    即可达到效果。

    然而却有了下面的问题。。。

    cout << fixed << setprecision(4) << 0.000101000110 << endl;
    cout << 3.141593 <<endl;
    

    却得到了这样的输出结果

    0.0001
    3.1416

    没错,之后的输出被同样的输出格式所限制了。

    那就要找到办法清除输出控制

    遗憾的是 CPP 目前并没有办法消除 setprecision 标签的效果方法,

    但是消除 fixed 还是有的

    在不需要 fixed 效果输出的前一行加上

    cout.unsetf( ios::fixed );
    

    例如

    cout << fixed << setprecision(4) << 0.000101000110 << endl;
    cout.unsetf( ios::fixed );
    cout << 3.141593 <<endl;

    输出结果如下:

    0.0001
    3.142

    但可以通过再次设定 setprecision 标签来达到控制位数

    例如

    cout << fixed << setprecision(4) << 0.000101000110 << endl;
    cout.unsetf( ios::fixed );
    cout <<setprecision(6) << 3.141593 <<endl;
    

    输出结果如下:

    0.0001
    3.14159

    所以在碰到对精确度和位数都有要求的题目时需要格外注意 setprecision 标签的设置状态!

    参考链接:cplusplus.com/reference/ios/fixed

  • 相关阅读:
    Spring cloud学习总结
    Spring boot学习笔记
    Rabbitmq安装步骤
    Mongodb 笔记采坑
    Rabbit Docker 部署及采坑
    各种知识汇总
    Echart 随便写的
    Linux常用命令
    Redis学习笔记
    Docker使用总结
  • 原文地址:https://www.cnblogs.com/4770k/p/6103011.html
Copyright © 2011-2022 走看看