setprecision(n) 单独使用控制有效数字位数,搭配 fixed 控制小数点后位数;例如 setprecision(3) 输出 12.3(3 位有效数字),加 fixed 后输出 12.346(小数点后 3 位)。

用 cout 做格式化输出,关键靠 iomanip 头文件里的操纵符(manipulators),它们能直接“插”进输出流,临时改变行为,不用写一堆 printf 风格的格式串,也比手动拼字符串更安全清晰。
控制小数位数和精度:setprecision + fixed/scientific
setprecision(n) 控制的是「有效数字位数」还是「小数点后位数」,取决于是否搭配 fixed 或 scientific:
- 单独用
setprecision(3):对 12.3456 输出12.3(3 位有效数字) - 加
fixed:强制小数点后保留 n 位,cout →12.346 - 加
scientific:科学计数法下小数点后保留 n 位,cout →1.23e+03
注意:fixed 和 scientific 是“开关”,设了之后会持续生效,直到被另一个覆盖或用 defaultfloat 恢复。
设置字段宽度和对齐方式:setw、left、right、internal
setw(n) 只对「下一个输出项」起作用,指定最小占位宽度(不足补空格);对齐需配合 left / right / internal:
立即学习“C++免费学习笔记(深入)”;
-
right(默认):内容右对齐,空格填左边 -
left:左对齐,空格填右边 -
internal:符号/前缀(如负号、0x)靠左,数值靠右,中间填空格(常用于带符号数字或十六进制)
例如:cout 输出 42 | 42。
填充字符和进制切换:setfill、hex、oct、dec
setfill(c) 设定填充字符(默认空格),效果持续到下次再设;hex/oct/dec 切换整数输出进制:
cout →0042cout →ff 377 255- 加
showbase可显示进制前缀:showbase →0xff
常见组合示例(实用小片段)
打印表格式浮点数据:
cout << fixed << setprecision(2) << setfill(' ') << left << setw(10) << "Name"
<< right << setw(8) << "Score" << setw(10) << "Time\n";
cout << setw(10) << "Alice" << setw(8) << 95.5 << setw(10) << 12.34 << '\n';
输出带符号、补零的十六进制地址:
cout << showbase << internal << setfill('0') << hex;
cout << setw(10) << -256; // 输出: -00000100











