我是靠谱客的博主 高大便当,最近开发中收集的这篇文章主要介绍C++格式化输出和精度控制C++格式化输出和精度控制,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

C++格式化输出和精度控制

  • setw

    cout 提供了一种指定每个号码使用的最小空格数量的方法。流操作符 setw 可用于建立指定宽度的打印区域。以下是其用法示例:

    int main()
    {
    int value = 23;
    cout << setw(5) << value;
    }
    

    单词 setw 后面括号内的数字表示紧随其后的值的字段宽度。字段宽度是屏幕上打印值的字符位置或空格的最小数量。在此示例中,数字 23 将显示在 5 个空格的字段中。

    为了进一步解释其工作原理,请看以下语句:

    int main()
    {
    int value = 23;
    cout << "(" << setw(5) << value << ")";
    }
    

    输出结果:

    (
    23)
    

    请注意,这个数字占据了字段的最后两个位置。由于这个数字没有使用整个字段,所以 cout 用空格填充了额外的 3 个位置。因为这个数字出现在字段的右侧,空格“填充”在前面,所以它被认为是右对齐的。

    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
    int value1 = 123;
    int value2 = 12;
    int value3 = 1;
    cout << setw(5) << value1 << "n";
    cout << setw(5) << value2 << "n";
    cout << setw(5) << value3 << "n";
    }
    

    输出结果:

    
    123
    12
    1
    

    请注意,setw 操作符要与每个值一起使用,这是因为 setw 只为紧随其后的值建立一个字段宽度。打印该值后,cout 将回到其默认的打印方式。如果数字太大导致字段无法完全容纳,那会怎么祥呢?如下列语句所示:

    int main()
    {
    int value = 12345;
    cout << "(" << setw(2) << value << ")";
    }
    

    输出结果:

    (12345)
    

    在这种情况下,cout 将打印整个数字,因为 setw 只指定了打印字段中最少的位置数。任何需要比指定最小值大的字段的数字将导致 cout 覆盖 setw 值。

    • 浮点数的字段宽度包括小数点的位置。
    • 字符串的字段宽度包括字符串中的所有字符,包括空格。
    • 默认情况下,该字段中打印的值为右对齐。这意味着它与打印字段的右侧对齐,并且必要时在值前填充空格。
  • setprecision

    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
    double value = 123.456;
    cout<<value<<endl;
    cout<<setprecision(7)<<value<<endl;
    cout<<setprecision(6)<<value<<endl;
    cout<<setprecision(5)<<value<<endl;
    cout<<setprecision(4)<<value<<endl;
    cout<<setprecision(3)<<value<<endl;
    cout<<setprecision(2)<<value<<endl;
    cout<<setprecision(1)<<value<<endl;
    }
    

    输出结果:

    123.456
    123.456
    123.456
    123.46
    123.5
    123
    1.2e+02
    1e+02
    

    请注意,与 setw 不同的是,setprecision 不计算小数点。例如,当使用 setprecision(6) 时,输出包含 5 位有效数,但是需要 7 个位置来显示 123.456

    数 字操作符显示的值
    28.92786setprecision(3)28.9
    21.40setprecision(5)21.4
    109.50setprecision(4)109.5
    34.78596setprecision(2)35

    setw和setprecision结合使用

    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
    double value1 = 123.456;
    double value2 = 12.3456;
    double value3 = 1.23456;;
    cout<<setprecision(5);
    cout<<setw(8)<<value1<<endl;
    cout<<setw(8)<<value2<<endl;
    cout<<setw(8)<<value3<<endl;
    }//允许显示最多 5 个有效数,并以 8 个字符的字段宽度右对齐打印
    

    输出结果:

    
    123.46
    12.346
    1.2346
    
  • fixed

    如果一个数字太大,无法使用 setprecision 指定的有效数位数来打印,则许多系统会以科学表示法的方式打印

    为了防止出现这种情况,可以使用另一个流操作符 fixed,它表示浮点输出应该以固定点或小数点表示法显示

    还是之前的程序:

    fixed 操作符与 setprecision 操作符一起使用时,setprecision 即可以以一种新的方式显示。它将指定浮点数字的小数点后要显示的位数,而不是要显示的总有效数位数。而这通常正是我们想要的。

    int main()
    {
    double value = 123.456;
    cout<<fixed;
    cout<<value<<endl;
    cout<<setprecision(7)<<value<<endl;
    cout<<setprecision(6)<<value<<endl;
    cout<<setprecision(5)<<value<<endl;
    cout<<setprecision(4)<<value<<endl;
    cout<<setprecision(3)<<value<<endl;
    cout<<setprecision(2)<<value<<endl;
    cout<<setprecision(1)<<value<<endl;
    }
    

    输出结果:

    123.456000//默认6位小数
    123.4560000
    123.456000
    123.45600
    123.4560
    123.456
    123.46
    123.5
    

最后

以上就是高大便当为你收集整理的C++格式化输出和精度控制C++格式化输出和精度控制的全部内容,希望文章能够帮你解决C++格式化输出和精度控制C++格式化输出和精度控制所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部