当前位置: 首页 > news >正文

C++中std::cout 的输出格式与数值精度使用详解

在 C++ 中,可以使用 <iomanip> 头文件中的 流操纵符(I/O manipulators) 来控制 std::cout 的输出格式与数值精度,尤其适用于浮点数(如 floatdoublelong double)的精度控制、对齐控制等。


一、常用流操纵符详解

操纵符说明
std::setprecision(n)设置有效数字位数或小数点后位数(取决于格式)
std::fixed定点格式输出浮点数,setprecision 控制小数点后精度
std::scientific科学计数法格式输出浮点数,setprecision 控制小数点后精度
std::showpoint显示小数点和无意义的尾随零(如 1.000
std::setw(n)设置字段宽度(最小字符数,右对齐)
std::left / std::right设置对齐方式(左对齐 / 右对齐)
std::setfill(c)设置填充字符(与 setw 配合使用)

二、不同精度控制的使用示例

1. 默认输出(可能是科学计数法或定点格式,取决于平台)

#include <iostream>int main() {double value = 123.456789;std::cout << "Default: " << value << std::endl;return 0;
}

2. 设置有效数字(默认格式)

#include <iostream>
#include <iomanip>int main() {double value = 123.456789;std::cout << "Precision(4): " << std::setprecision(4) << value << std::endl;return 0;
}

3. fixed + setprecision(固定小数位数)

#include <iostream>
#include <iomanip>int main() {double value = 123.456789;std::cout << std::fixed << std::setprecision(3);std::cout << "Fixed(3): " << value << std::endl;return 0;
}

输出:

Fixed(3): 123.457

4. scientific + setprecision

#include <iostream>
#include <iomanip>int main() {double value = 123.456789;std::cout << std::scientific << std::setprecision(2);std::cout << "Scientific(2): " << value << std::endl;return 0;
}

输出:

Scientific(2): 1.23e+02

三、更多格式控制示例

5. 对齐与填充

#include <iostream>
#include <iomanip>int main() {double value = 42.0;std::cout << std::setw(10) << std::right << value << std::endl;std::cout << std::setw(10) << std::left << value << std::endl;std::cout << std::setw(10) << std::setfill('*') << value << std::endl;return 0;
}

输出:

      42
42        
*******42

四、恢复默认状态

使用 std::cout.unsetf(std::ios_base::fixed) 可以取消固定格式(如 fixed/scientific):

std::cout.unsetf(std::ios_base::fixed);
std::cout.unsetf(std::ios_base::scientific);

或者保存输出流的状态再恢复:

std::ios oldState(nullptr);
oldState.copyfmt(std::cout);// 使用各种格式设置
std::cout << std::fixed << std::setprecision(2) << 3.14159 << std::endl;// 恢复格式
std::cout.copyfmt(oldState);

五、常见场景示例小结

场景示例代码
输出保留 3 位小数std::cout << std::fixed << std::setprecision(3);
显示科学计数法 + 2 位小数std::cout << std::scientific << std::setprecision(2);
设置输出宽度为 10std::cout << std::setw(10) << value;
左对齐 + 填充std::cout << std::setw(10) << std::left << std::setfill('-') << value;

相关文章:

  • HarmonyOS NEXT~鸿蒙开发能力:HarmonyOS SDK AI 全解析
  • [ctfshow web入门] web78
  • MySQL8.4组复制
  • Linux服务器时间同步——Chronyd
  • 核心知识点:惯性导航(Inertial Navigation)
  • JDBC连接数据库精准提炼
  • 具身智能(Embodied AI)
  • 把 jar 打包成 exe
  • CTA-861-G-2017中文pdf版
  • 【QQ音乐】sign签名| data参数加密 | AES-GCM加密 | webpack (下)
  • CppCon 2014 学习第3天:Viewing the world through array-shaped glasses
  • 传输层协议TCP(上)
  • 知识隔离的视觉-语言-动作模型:训练更快、运行更快、泛化更好
  • 【仿生系统】qwen的仿生机器人解决方案
  • 工程化架构设计:Monorepo 实战与现代化前端工程体系构建
  • Webug4.0靶场通关笔记03- 第3关SQL注入之时间盲注(手注法+脚本法 两种方法)
  • 【AI论文】ScienceBoard:评估现实科学工作流程中的多模态自主代理
  • Unity Button 交互动画
  • 易经六十四卦象解释数据集分享!智能体知识库收集~
  • 使用MFC 写dap上位机在线烧写FLASH
  • 网站建设用户登录/杭州网站优化
  • 网站文件上传完成后打开网站显示网站建设中怎么回事?/百度官网首页官网
  • 网站建设的一般流程/外链生成工具
  • 企业官网型网站建设/本地推广平台
  • 服务类网站banner/seo分析
  • 聊城专业网站设计公司/免费推广工具