- Python
Python 格式化输出保留小数教程
- @ 2025-9-25 20:00:01
Python 格式化输出保留小数教程
在 Python 中,保留指定小数位数是格式化输出的常见需求,常用于数据展示、报表生成等场景。以下是 4种核心实现方法,附详细示例和使用场景,新手也能轻松掌握。
一、方法1:f-string 格式化(推荐,Python 3.6+)
f-string 是最简洁、高效的格式化方式,通过 {变量:.nf} 控制小数位数(n 为要保留的位数),支持四舍五入。
语法
print(f"格式化后的值:{数值变量:.nf}")
.nf:n是整数,代表保留的小数位数;f表示浮点型。- 若数值小数位数不足
n,会自动补 0;若超过,则四舍五入。
示例
# 定义一个浮点数值
pi = 3.1415926
score = 92.5 # 小数位数不足时补0
price = 100 # 整数也能按小数格式输出
# 保留2位小数
print(f"圆周率(保留2位):{pi:.2f}") # 输出:圆周率(保留2位):3.14
# 保留4位小数
print(f"圆周率(保留4位):{pi:.4f}") # 输出:圆周率(保留4位):3.1416
# 整数保留1位小数(补0)
print(f"价格(保留1位):{price:.1f}") # 输出:价格(保留1位):100.0
# 结合其他文本
print(f"小明的分数:{score:.2f}分") # 输出:小明的分数:92.50分
二、方法2:format() 函数(通用,兼容低版本)
format() 函数通过 "{:.nf}".format(数值变量) 实现保留小数,语法与 f-string 类似,适合 Python 3.6 以下版本或需要动态拼接格式的场景。
语法
print("格式化后的值:{:.nf}".format(数值变量))
示例
# 定义数值
area = 25.789 # 面积
weight = 68 # 体重
# 保留1位小数
print("面积:{:.1f}平方米".format(area)) # 输出:面积:25.8平方米(四舍五入)
# 保留3位小数(小数不足补0)
print("体重:{:.3f}公斤".format(weight)) # 输出:体重:68.000公斤
# 同时格式化多个变量
print("面积{:.2f}㎡,体重{:.1f}kg".format(area, weight)) # 输出:面积25.79㎡,体重68.0kg
三、方法3:round() 函数(仅保留,不直接格式化)
round(数值变量, n) 是 Python 内置函数,专门用于对数值本身进行四舍五入保留 n 位小数,返回的是处理后的数值(而非字符串),常配合 print() 输出。
语法
处理后的值 = round(数值变量, n)
print(处理后的值) # 直接输出数值,或结合其他文本
- 若
n=0,则保留整数(四舍五入);若不写n,默认保留 0 位。 - 注意:
round()对 .5 结尾的数值 会向“最近的偶数”靠拢(如round(2.5)结果为 2,round(3.5)结果为 4),这是 Python 的设计规则。
示例
# 定义数值
num1 = 4.678
num2 = 5.5
num3 = 6.5
# 保留2位小数
print(round(num1, 2)) # 输出:4.68(四舍五入)
# 保留0位小数(整数)
print(round(num1)) # 输出:5(默认保留0位)
# .5结尾的特殊情况
print(round(num2)) # 输出:6(向最近偶数靠拢:5和6中,6是偶数)
print(round(num3)) # 输出:6(向最近偶数靠拢:6和7中,6是偶数)
# 结合文本输出
print(f"处理后的值:{round(num1, 1)}") # 输出:处理后的值:4.7
四、方法4:% 格式化(旧版,逐步淘汰)
% 是 Python 早期的格式化方式,通过 %.nf 保留小数,语法类似 C 语言,目前已被 f-string 和 format() 替代,但仍需了解(旧代码中可能遇到)。
语法
print("格式化后的值:%.nf" % 数值变量)
示例
# 定义数值
height = 1.756 # 身高
temp = 23.4 # 温度
# 保留2位小数
print("身高:%.2f米" % height) # 输出:身高:1.76米
# 保留1位小数
print("温度:%.1f℃" % temp) # 输出:温度:23.4℃
# 多个变量(注意括号)
print("身高%.2f米,温度%.1f℃" % (height, temp)) # 输出:身高1.76米,温度23.4℃
五、常见问题与注意事项
-
四舍五入的一致性:
f-string、format()、% 格式化均遵循“四舍五入”规则,但round()对.5结尾的数值会向“最近偶数”靠拢(如round(1.5)=2,round(2.5)=2),需根据需求选择。 -
小数位数不足时补0:
所有方法都会自动补 0,例如print(f"{5:.2f}")会输出5.00。 -
处理科学计数法:
若数值极大/极小(如1e6),默认可能显示科学计数法,可通过{:.nf}强制保留小数,例如print(f"{123456.789:.2f}")输出123456.79(非科学计数法)。
六、方法对比与推荐场景
| 方法 | 优点 | 缺点 | 推荐场景 |
|---|---|---|---|
| f-string | 简洁、高效、易读 | 仅支持 Python 3.6+ | 日常开发(首选) |
| format() | 通用、兼容低版本 | 略繁琐 | 低版本 Python 或动态格式 |
| round() | 直接处理数值 | 不直接格式化文本 | 仅需数值计算,不侧重展示 |
| % 格式化 | 兼容极旧版本 | 语法繁琐、功能少 | 维护旧代码 |
总结:日常开发优先用 f-string,简洁又高效;若需兼容 Python 3.5 及以下,用 format();仅需计算数值时用 round()。