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

Python中按特定规则对除法取整:让靠前人员承担更多金额

解决方法

要实现千位取整且靠前人员承担更多、总金额完全匹配的需求,你可以按以下思路编写代码:

核心逻辑

把总金额先转换成千位单位的整数,分配这个整数时让前N个人多拿1(N是总金额除以人数的余数),最后再转回原单位。这样既保证靠前的人金额更高,又能确保总和与原总金额完全一致。

代码实现

total = 245000
num_people = 3
step = 1000  # 千位取整的步长

# 将总金额转换为千位单位的整数
total_k = total // step
# 计算每人的基础千位金额和余数
base_k = total_k // num_people
remainder = total_k % num_people

# 分配金额:前remainder个人多拿1000
amounts = []
for i in range(num_people):
    if i < remainder:
        amounts.append((base_k + 1) * step)
    else:
        amounts.append(base_k * step)

# 输出结果
for idx, amount in enumerate(amounts, 1):
    print(f"Person{idx} = {amount}")

运行结果

Person1 = 82000
Person2 = 82000
Person3 = 81000

为什么原代码不行?

你原来用round(total / 3)得到的是82000,但三个82000的总和是246000,比原总金额多了1000。这是因为round只是对单个数值四舍五入,没有考虑整体总和的匹配,而上面的方法通过余数分配解决了这个问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 18:30:15