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

考虑交易手续费的等额支付拆分计算逻辑与代码实现

带交易手续费的等额分账计算方案

规则前提

本计算基于通用转账手续费规则:手续费由发起方(参与方1)承担,即发起金额为t的转账时,收款方全额到账t,发起方账户累计扣减金额为 t + t*1.9% + 0.1 = 1.019t + 0.1。如果业务为手续费从转账金额内扣,只需调整方程参数,核心逻辑通用。

计算思路

  • 设5名参与方最终相等的账户余额为x
  • 其余4名参与方无转出操作,仅收到1笔转账,因此每人收到的转账金额等于最终余额x,即每笔转账的提交金额为x
  • 参与方1初始持有1000美元,共发起4笔等额转账,总扣减金额为 4*(1.019x + 0.1)
  • 参与方1最终余额 = 初始资金 - 总扣减金额,该值必须等于x,据此列一元一次方程:
    x = 1000 - 4*(1.019x + 0.1)
    
  • 移项求解得:x = (1000 - 4*0.1) / (1 + 4*1.019) ≈ 196.93美元
  • 因货币最小单位为0.01美元,四舍五入产生的小额尾差(通常不超过2美分)默认由发起方承担,符合常规分账业务规则。

代码实现参考(Python)

from decimal import Decimal, ROUND_HALF_UP

# 场景参数 用Decimal做高精度计算避免浮点误差
TOTAL_AMOUNT = Decimal("1000.0")
USER_COUNT = 5
TRANSFER_COUNT = USER_COUNT - 1
FEE_RATE = Decimal("0.019")
FIXED_FEE = Decimal("0.1")
CENT = Decimal("0.01")

# 求解无精度损失的人均金额
per_amount = (TOTAL_AMOUNT - TRANSFER_COUNT * FIXED_FEE) / (1 + TRANSFER_COUNT * (1 + FEE_RATE))
# 转账金额保留到分,四舍五入
per_transfer = per_amount.quantize(CENT, rounding=ROUND_HALF_UP)
# 计算发起方实际总扣减
total_deduct = TRANSFER_COUNT * (per_transfer * (1 + FEE_RATE) + FIXED_FEE)
sender_final = (TOTAL_AMOUNT - total_deduct).quantize(CENT, rounding=ROUND_HALF_UP)

print(f"每笔向其他参与方的转账金额:{per_transfer} 美元")
print(f"4名收款方最终到账余额:{per_transfer} 美元/人")
print(f"参与方1(发起方)最终余额:{sender_final} 美元")
print(f"尾差说明:最大差额不超过0.02美元,由发起方承担,符合业务要求")

运行输出参考

每笔向其他参与方的转账金额:196.93 美元
4名收款方最终到账余额:196.93 美元/人
参与方1(发起方)最终余额:196.91 美元
尾差说明:最大差额不超过0.02美元,由发起方承担,符合业务要求

如果要求5人余额完全无差额,可直接使用无精度截断的per_amount值(约196.9267美元)作为转账金额即可,仅适用于无最小货币单位限制的账户体系。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 18:16:00