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

如何对金额保留四位小数并向下取整?Python场景示例

Python中对金额保留四位小数并向下取整的方法

方法一:使用math.floor实现

利用地板取整的特性,先将数值放大10000倍(对应四位小数),取整后再缩小回原比例:

import math

price = 0.6096689733333334
four_digits = math.floor(price * 10000) / 10000
print(four_digits)  # 输出 0.6096

注意:由于浮点数本身的精度限制,极端情况下可能出现微小误差,如果是处理金额这类对精度要求极高的场景,更推荐下面的方法。

方法二:使用decimal模块(推荐用于金额计算)

decimal模块专门用于精确的十进制运算,可以直接指定舍入模式为向下取整:

from decimal import Decimal, ROUND_FLOOR

price = Decimal('0.6096689733333334')
four_digits = price.quantize(Decimal('0.0000'), rounding=ROUND_FLOOR)
print(four_digits)  # 输出 0.6096

初始化Decimal时建议传入字符串而非浮点数,避免浮点数精度带来的潜在问题。

原代码不符合需求的原因

你使用的'{:.4f}'.format()默认采用四舍五入规则,所以会把0.60966...近似为0.6097,而上述两种方法都是强制对第四位小数之后的部分进行向下取整,能满足计算结果总和不超过原价格的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 06:06:30