编写一个程序,输入任意一个数(整数或浮点数),输出保留小数点后两位的结果(四舍五入)。
学习材料:
以下程序实现了浮点数的输出,保留小数点后两位格式形式。
#include <iostream>
#include <iomanip>//格式化输出头文件
using namespace std;
int main()
{
double a = 3.689562;
cout << fixed << setprecision(2) << a << endl; //在输出前设备输出格式
……
}
头文件
<iomanip>:提供 fixed 和 setprecision 等格式化控制符。
为什么不用 printf?
cout 的格式化更符合C++风格,且类型安全(无需 %f、%d 等占位符)。
格式化输出
fixed:强制以小数形式输出(避免科学计数法)。
setprecision(2):保留两位小数(自动四舍五入)。
setprecision 和 fixed 的顺序重要吗?
重要! 必须先用 fixed 锁定小数模式,再设置精度
核心语法:fixed + setprecision(2) 是保留两位小数的黄金组合。
数据类型选择
优先使用 double,避免 float 的精度损失:
更广的数值范围(±1e308)。
更高的精度(15~16位有效数字)。
特殊输入处理
整数输入(如 5)会自动补全为 5.00。
负数(如 -2.3)保留符号并补零为 -2.30。
补充材料阅读(优化版):
#include <iomanip> 是 C++ 标准库中用于输入输出格式化的头文件。
命名解析:
io:输入输出(Input/Output)
manip:操纵器(Manipulator)的缩写,用于控制数据流的显示格式
| 控制符 | 作用 | 示例 | 注意事项 |
|---|---|---|---|
setprecision(n)
|
设置有效数字位数(默认6位) |
setprecision(4) → 3.142
|
对整数无效 |
fixed
|
固定小数位数显示 |
fixed << setprecision(2) → 3.14
|
需与 setprecision 联用
|
scientific
|
科学计数法显示 |
scientific << 314.15 → 3.141500e+02
|
默认小写 e
|
关键区别:
默认模式:setprecision(n) 控制总有效位数(如 1234.567 设为4位 → 1235)。
固定小数模式:fixed + setprecision(n) 强制保留 n 位小数(如 3.14159 设为2位 → 3.14)。
| 控制符 | 作用 | 示例输入(int a=255) | 示例输出 |
|---|---|---|---|
dec
|
十进制 |
cout << dec << a;
|
255
|
hex
|
十六进制 |
cout << hex << a;
|
ff
|
oct
|
八进制 |
cout << oct << a;
|
377
|
setbase(n)
|
动态设置进制(n=8,10,16) |
cout << setbase(16) << a;
|
ff
|
| 控制符 | 作用 | 示例(int a=42) | 输出效果 |
|---|---|---|---|
setw(n)
|
设置字段宽度 |
cout << setw(5) << a;
|
42
|
setfill(c)
|
设置填充字符 |
cout << setfill('*') << setw(5) << a;
|
***42
|
left
|
左对齐 |
cout << left << setw(5) << a;
|
42
|
right
|
右对齐(默认) |
cout << right << setw(5) << a;
|
42
|
注意:setw(n) 仅对下一个输出项生效,需重复设置。
| 控制符 | 作用 | 示例 | 输出效果 |
|---|---|---|---|
uppercase
|
科学计数法/十六进制大写 |
cout << uppercase << scientific << 314.15;
|
3.141500E+02
|
showpos
|
显示正数的 + 号
|
cout << showpos << 42;
|
+42
|
showpoint
|
强制显示小数点 |
cout << showpoint << 42.0;
|
42.0000
|
resetiosflags
|
清除格式设置 |
resetiosflags(ios::fixed)
|
恢复默认 |
输入一个数 num(范围:-1e6 ≤ num ≤ 1e6)。
输出一个浮点数,保留两位小数。
若输入为整数,补全 .00(如 5 → 5.00)。
若输入小数位数不足两位,补零(如 3.6 → 3.60)。
若输入小数位数超过两位,四舍五入(如 3.599 → 3.60)。