zoukankan      html  css  js  c++  java
  • C/C++输出那点小事

    C/C++控制输出时有时有控制精度的问题,现总结如下(这时C写法更简单些):

    1.setprecision(n) 默认设置输出的数字的总位数为n,包含整数和小数部分;

    2.setiosflags(ios::fixed) 默认输出6位,必须与setprecision(n)配合使用,用来控制小数位数,不够补0;

    3.resetiosflags(ios::fixed) 取消精度的设置。

    直接上代码:

    #include<iostream> 
    #include<iomanip> // 精度控制头文件 
    using namespace std; 
    int main() 
    { 
        const double value=12.3456789; 
        // C输出方式printf()函数 
        printf("%lf\n",value); // double输出为 12.3456789:遵循IEEE标准的8字节(64位)的double能表示的有效数字的位数是:15~16
        // C++输出方式cout函数 
        cout<<value<<endl; // 默认以6精度,所以输出为 12.3457 
        cout<<setprecision(4)<<value<<endl; // 改成4精度,所以输出为12.35 
        cout<<setprecision(8)<<value<<endl; // 改成8精度,所以输出为12.345679
        // C语言控制精度方式: 
        printf("%.4lf\n",value); 
        // C++第一种方式: 
        cout<<fixed<<setprecision(4)<<value<<endl; // 加了fixed意味着是固定点方式显示,所以这里的精度指的是小数位,输出为12.3457 
        
        cout<<value<<endl; // fixed和setprecision的作用还在,依然显示12.3457 
        cout.unsetf(ios::fixed); // 去掉了fixed,所以精度恢复成整个数值的有效位数,显示为12.35 
        cout<<value<<endl; 
        cout.precision(6); // 恢复成原来的样子,输出为12.3457 
        cout<<value<<endl;
        // C++第二种方式:
        cout<<setiosflags(ios::fixed)<<setprecision(5)<<value<<endl;  // 输出为12.34568,小数位数是5位,不够补0
        cout<<resetiosflags(ios::fixed); // 取消精度的设置
        system("pause"); 
        return 0;
    }
  • 相关阅读:
    WebStorm 使用
    Mac上因磁盘格式导致gulp无限刷新问题
    JS数组随机排序
    Javascript高性能动画与页面渲染
    两列布局,左边固定,右边自适应的三种方法
    google pay app权限使用说明
    javaFX
    https网站引用http路径的js和css失效解决办法
    tomcat笔记
    java sigar.jar
  • 原文地址:https://www.cnblogs.com/sooner/p/2454765.html
Copyright © 2011-2022 走看看