通过MCP连接 →

输入计算

提示:先选择货币,再选择模式。系统默认使用所选货币的全部流通面额(采用贪心算法得出张数最少的拆分方案)。

数学公式

数学公式: 找零计算器
Show calculation steps (1)
  1. Greedy denomination breakdown

    Greedy denomination breakdown: 找零计算器

    For each denomination d (largest first), in integer subunits: take as many as fit, then move to the smaller denomination.

广告

结果

应找零钱
12.50
USD
面额 数量
$10 1
$2 1
50¢ 1
纸币与硬币总数 3

这个计算器能做什么

找零计算器可以算出现金交易中顾客应该收回多少零钱,并把这笔金额拆分成实际可行、张数最少的纸币和硬币组合。它是一款通用工具,不局限于某一个国家或地区,支持多种常见的世界货币,包括美元(USD,默认选项)、欧元(EUR)、英镑(GBP)、加元(CAD)、澳元(AUD)、墨西哥比索(MXN)、菲律宾比索(PHP)、新西兰元(NZD)和巴西雷亚尔(BRL)。各币种均按其本国流通面额进行拆分。

使用方法

先选择货币和计算模式。在“计算找零”模式下,输入商品价格和顾客实付金额,工具会用“实付金额减去商品价格”算出应找的零钱。在“直接输入找零金额”模式下,你只需填写零钱金额,跳过商品价格的计算。结果会显示应找零钱总额,以及一张明细表,按面额从大到小列出每种纸币和硬币各需要几张(枚),并给出总张(枚)数。

公式与算法

首先算出找零金额:

$$\text{找零} = \text{实付金额} - \text{商品价格}$$

(或直接输入的金额)。为了避免浮点数计算误差,系统会先把金额乘以 100 并四舍五入,转换成整数的最小单位(分)。随后采用贪心算法,从最大面额到最小面额依次遍历:每种面额取 \(n = \left\lfloor \frac{r}{d} \right\rfloor\) 个,再从剩余金额中扣除。对于美元、欧元、英镑这类标准(规范型)币制,贪心算法得出的就是真正张(枚)数最少的方案。

Advertisement
贪心算法的流程图,先从剩余找零中减去最大面额
贪心算法不断选取能装下的最大面额,然后用余下的金额继续。

实例演示

以美元为例:商品价格 $7.50,顾客实付 $20.00。

$$\text{找零} = \$20.00 - \$7.50 = \$12.50 = 1250 \text{ 分}$$

贪心算法的过程:一张 $10(剩 250 分),一张 $2(剩 50 分),一枚 50¢ 硬币(剩 0)。最终结果:1 张 $10、1 张 $2、1 枚 50¢ —— 总共 3 件。

把找零拆成几张纸币和若干硬币的图示,带有数量标记
示例:将应找的零钱拆分成最少数量的纸币和硬币。

常见问题

为什么要换算成“分”? 用整数的最小单位(分)来计算,可以避免类似 12.499999 这样的误差导致多算出一分钱。

如果我禁用了某个面额会怎样? 贪心拆分仍会在剩余可用的面额中进行;如果无法凑到 0,系统会报告剩余的差额。建议保留最小面额的硬币,以确保能够找出准确的零钱。

贪心算法一定是最优的吗? 对于各国规范型币制,答案是肯定的。但如果使用了不常见的面额组合,或禁用了部分面额,它返回的是一个有效方案,却未必是全局张(枚)数最少的方案。

最后更新: