• Python
  • Python 格式化输出保留小数教程

  • @ 2025-9-25 20:00:01

Python 格式化输出保留小数教程

在 Python 中,保留指定小数位数是格式化输出的常见需求,常用于数据展示、报表生成等场景。以下是 4种核心实现方法,附详细示例和使用场景,新手也能轻松掌握。

一、方法1:f-string 格式化(推荐,Python 3.6+)

f-string 是最简洁、高效的格式化方式,通过 {变量:.nf} 控制小数位数(n 为要保留的位数),支持四舍五入。

语法

print(f"格式化后的值:{数值变量:.nf}")
  • .nfn 是整数,代表保留的小数位数;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℃

五、常见问题与注意事项

  1. 四舍五入的一致性
    f-string、format()、% 格式化均遵循“四舍五入”规则,但 round().5 结尾的数值会向“最近偶数”靠拢(如 round(1.5)=2round(2.5)=2),需根据需求选择。

  2. 小数位数不足时补0
    所有方法都会自动补 0,例如 print(f"{5:.2f}") 会输出 5.00

  3. 处理科学计数法
    若数值极大/极小(如 1e6),默认可能显示科学计数法,可通过 {:.nf} 强制保留小数,例如 print(f"{123456.789:.2f}") 输出 123456.79(非科学计数法)。

六、方法对比与推荐场景

方法 优点 缺点 推荐场景
f-string 简洁、高效、易读 仅支持 Python 3.6+ 日常开发(首选)
format() 通用、兼容低版本 略繁琐 低版本 Python 或动态格式
round() 直接处理数值 不直接格式化文本 仅需数值计算,不侧重展示
% 格式化 兼容极旧版本 语法繁琐、功能少 维护旧代码

总结:日常开发优先用 f-string,简洁又高效;若需兼容 Python 3.5 及以下,用 format();仅需计算数值时用 round()

0 条评论

目前还没有评论...