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

Python指定硬币找零:最小硬币数计算及错误修复问询

解决50分/1€/2€硬币找零的数量计算错误问题

问题场景

需求:实现分销商找零功能,仅允许使用50分(50)、1€(100分)、2€(200分)硬币。已正确计算找零金额(如商品售价5€,客户支付10€,应找零5€即500分),但输出的硬币组成数量错误。

核心问题分析

这类找零错误大多是因为硬币面额计算顺序错误导致的。由于50分、1€、2€是倍数递减的关系(200是100的2倍,100是50的2倍),贪心算法完全适用——优先用最大面额硬币,能得到正确且最优的硬币组合。如果从最小面额开始计算,会得到不符合预期的数量结果。

正确实现代码示例(以Python为例)

# 先将找零金额统一转换为分(避免浮点精度问题)
change_in_cents = 500  # 对应5€找零

# 从最大面额开始计算
two_euro_coins = change_in_cents // 200
remaining = change_in_cents % 200

one_euro_coins = remaining // 100
remaining = remaining % 100

fifty_cents_coins = remaining // 50

# 输出结果
print(f"找零组成:{two_euro_coins}个2€,{one_euro_coins}个1€,{fifty_cents_coins}个50分")

运行结果

针对5€找零,输出为:

找零组成:2个2€,1个1€,0个50分

这个结果符合预期(2×2€ + 1×1€ = 5€)。

关键注意点

  • 务必先计算最大面额的硬币数量,再依次处理更小面额,这是保证结果正确的核心。
  • 统一用分作为计算单位,避免使用欧元浮点值带来的精度误差(比如0.5+1+2这类计算可能出现小数精度问题)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 03:10:16