You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Pandas DataFrame中如何对Loss Ratio百分比列四舍五入保留2位小数

问题根因
  1. 浮点数精度问题:0.805这类十进制小数无法被二进制浮点数精确存储,实际存储的数值会略小于0.805,触发舍入规则时会被判定为不足0.805
  2. Pandas默认舍入规则为银行家舍入(四舍六入五成双):当舍入位刚好是5时,会向最近的偶数方向舍入,0.805按该规则会舍入为0.80而非0.81
可用解决方案

方案1:放大转整数后舍入(简单高效,适合大多数场景)

通过放大100倍后再加微小偏移量抵消浮点数误差,再做舍入,代码如下:

# 加1e-8是为了抵消浮点数存储的微小负偏差,避免误判
df['Loss Ratio'] = (df['Loss Ratio'] * 100 + 1e-8).round() / 100

方案2:用Decimal模块指定标准四舍五入规则(精度最高,严格遵循四舍五入)

如果需要完全符合日常使用的四舍五入规则(ROUND_HALF_UP,即逢5进1),可以使用Python标准库的Decimal模块实现:

from decimal import Decimal, ROUND_HALF_UP

df['Loss Ratio'] = df['Loss Ratio'].apply(
    lambda x: float(Decimal(str(x)).quantize(Decimal('0.00'), rounding=ROUND_HALF_UP))
)

以上两种方案处理后,你示例中的0.805都会被正确舍入为0.81,其余数值也符合预期效果。

内容的提问来源于stack exchange,提问作者newt335

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 14:24:00