C++输入输出,设置精度setprecision、域宽setw、填充setfill

本文的三个函数均需要引入头文件:#include <iomanip>

设置输出精度 setprecision(int n)

参考:C语言中文网:c++ setprecision用法详解

// 写法1
cout << setprecision(10) << a << endl;

// 写法2:a、b、c都将以10位有效位输出
cout << setprecision(10);
cout << a << endl;
cout << b << endl;
cout << c << endl;
  1. setprecision设置的是有效位数,即出现在小数点前后的总位数。
  2. 默认情况下,系统使用6个有效位显示浮点值。
  3. 如果设置的有效位数小于原数的位数,setprecision将四舍五入,而不是截断数字。
  4. 如果设置的有效位数大于原数的位数,则setprecision不起作用,还是按照原数显示。
  5. 末尾的零将被省略。因此,尽管指定了 setprecision(5),但是 21.40 仍显示为 21.4。
  6. 与 setw 字段宽度不同的是,setprecision 的精度设置将保持有效,直到更改为其他值为止。
  7. 可以通过cout.precision()查看当前的输出精度。
    image

设置域宽setw(int n)

  1. setw() 函数只对紧接着的输出产生作用。
  2. 当后面紧跟着的输出字段长度小于 n 的时候,在该字段前面用空格补齐,当输出字段长度大于 n 时,全部整体输出。
    image
#include <iostream>
#include <iomanip>

using namespace std;

int main()
{
    // 开头设置宽度为 4,后面的 runoob 字符长度大于 4,所以不起作用
    cout << setw(4) << "runoob" << endl;
    // 中间位置设置宽度为 4,后面的 runoob 字符长度大于 4,所以不起作用
    cout << "runoob" << setw(4) << "runoob" << endl;
    // 开头设置间距为 14,后面 runoob 字符数为6,前面补充 8 个空格
    cout << setw(14) << "runoob" << endl;
    // 中间位置设置间距为 14 ,后面 runoob 字符数为6,前面补充 8 个空格
    cout << "runoob" << setw(14) << "runoob" << endl;
    return 0;
}

运行结果:
image

设置填充

  1. setw() 默认填充的内容为空格,可以 setfill() 配合使用设置其他字符填充。
cout << setfill('*')  << setw(14) << "runoob" << endl;
// 输出结果:********runoob
posted @   zhuyuxi333  阅读(2705)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示