python取小数点后2位推荐用f"{x:.2f}"格式化显示,需精确计算时用decimal模块,截断处理需手动实现如math.floor(x*100)/100。

Python 中取小数点后 2 位,常用且推荐的方式是用 round() 函数或格式化输出,但要注意:round() 是四舍五入,且对浮点数精度有局限;如需精确控制(比如金融计算),应优先用 decimal 模块或字符串格式化。
用 round() 四舍五入(最简单)
适用于一般场景,代码简洁:
-
round(3.14159, 2)→ 3.14 -
round(2.675, 2)→ 2.67(注意:这不是“错误”,而是浮点数二进制表示导致的“银行家舍入”行为,实际是向偶数舍入)
用格式化转成字符串(保留两位、不四舍五入?不行,它仍是四舍五入)
以下方式输出为字符串,视觉上固定两位小数,本质仍是四舍五入:
-
f"{3.14159:.2f}"→ “3.14” -
"%.2f" % 3.14159→ “3.14” -
format(3.14159, ".2f")→ “3.14”
需要截断(非四舍五入)?手动处理
比如 3.149 要变成 3.14(直接砍掉第三位以后):
立即学习“Python免费学习笔记(深入)”;
-
int(x * 100) / 100→ 3.14(仅适用于正数) - 更稳妥写法:
math.floor(x * 100) / 100(正负都适用,需import math) - 或者用
decimal精确控制:Decimal(str(x)).quantize(Decimal('0.01'), rounding=ROUND_DOWN)
金融/高精度场景:用 decimal 模块
避免浮点误差,适合金额等关键计算:
from decimal import Decimal, ROUND_HALF_UP-
Decimal('3.14159').quantize(Decimal('0.01'), rounding=ROUND_HALF_UP)→ Decimal(‘3.14’) - 注意:输入尽量用字符串(如
'3.14159'),避免Decimal(3.14159)先引入浮点误差
基本上就这些。日常显示用 f"{x:.2f}" 最方便;要严格数值精度,选 decimal;要截断而非四舍五入,得自己算。不复杂但容易忽略细节。