Python保留小数有三种方式:f-string/format用于显示(不改原值,银行家舍入),round()用于简单四舍五入(受浮点精度影响),decimal模块用于金融等精确计算(无误差、舍入可控)。

Python 中保留小数主要有三种常用方式:格式化字符串、round() 函数、以及 decimal 模块。选哪种取决于你的需求——是单纯显示、参与计算,还是需要精确的十进制运算(比如金融场景)。
用 f-string 或 format() 控制显示位数
适合输出、日志、界面展示等场景,不改变原始数值,只控制显示效果。
- f-string:写成
f"{x:.2f}"表示保留 2 位小数(四舍五入后转为字符串) -
format(x, ".3f")效果一样,保留 3 位 - 注意:
1.235用.2f会显示为"1.23"(不是"1.24"),因为 Python 的浮点舍入遵循“银行家舍入”规则(偶数优先),但对大多数日常小数,表现和常规四舍五入一致
用 round() 做简单四舍五入
round(x, n) 返回一个浮点数,保留 n 位小数(也是银行家舍入)。
-
round(3.14159, 2)→3.14 -
round(2.675, 2)→2.67(不是 2.68,因 7 是奇数,前一位 6 保持偶数) - ⚠️ 注意:浮点数本身存在精度问题,
round(2.675, 2)实际上可能操作的是近似值2.6749999...,导致结果出人意料;如需严格控制,别依赖round()
用 decimal 精确控制小数(推荐用于钱、科学计算)
当必须避免浮点误差、要求严格按十进制舍入时,用 decimal 模块:
立即学习“Python免费学习笔记(深入)”;
- 先用字符串初始化:
from decimal import Decimal, ROUND_HALF_UP; d = Decimal("2.675") - 再调用
quantize():d.quantize(Decimal("0.01"), rounding=ROUND_HALF_UP)→Decimal('2.68') - 好处:完全可控、无二进制浮点误差、支持多种舍入模式(如向上、向下、四舍五入、银行家舍入等)
基本上就这些。显示用 f-string,简单处理用 round,关键数据用 Decimal。











