Подключиться через 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
Total bills & coins 3

Что делает этот калькулятор

Калькулятор сдачи определяет, сколько денег нужно вернуть покупателю при оплате наличными, и раскладывает эту сумму на минимально возможное количество банкнот и монет. Это универсальный инструмент: он не привязан к одной стране и позволяет выбрать одну из распространённых мировых валют — доллар США (USD, используется по умолчанию), евро (EUR), британский фунт (GBP), канадский доллар (CAD), австралийский доллар (AUD), мексиканское песо (MXN), филиппинское песо (PHP), новозеландский доллар (NZD) и бразильский реал (BRL). Российский рубль здесь напрямую не поддерживается, но логика расчёта одинакова для любой валюты с привычным номиналом.

Как пользоваться

Выберите валюту и режим работы. В режиме «Рассчитать сдачу» введите стоимость покупки и сумму, которую внёс покупатель — калькулятор вычислит сдачу как «внесено минус покупка». В режиме «Указать сумму сдачи» вы вводите сдачу напрямую, минуя расчёт по покупке. В результате отображается сумма сдачи, а также таблица: сколько купюр и монет каждого номинала нужно выдать (от крупных к мелким) и общее количество единиц.

Формула и алгоритм

Сначала вычисляется сдача:

$$\text{Сдача} = \text{Внесено} - \text{Покупка}$$

(либо берётся введённая сумма). Чтобы избежать ошибок округления при работе с дробными числами, сумма переводится в целые субъединицы (центы): её умножают на 100 и округляют. Затем «жадный» алгоритм перебирает номиналы от крупного к мелкому, беря по

$$n_d = \left\lfloor \frac{r}{d} \right\rfloor,\quad r \leftarrow r - n_d\,d$$

единиц каждого и вычитая их из остатка. Для классических («канонических») денежных систем — таких как USD, EUR и GBP — жадный алгоритм даёт действительно минимальное число единиц.

Реклама
Блок-схема жадного алгоритма, вычитающего сначала крупнейшие номиналы из оставшейся сдачи
Жадный алгоритм многократно берёт наибольший подходящий номинал, а затем продолжает с остатком.

Разбор на примере

USD, покупка $7,50, внесено $20,00. Сдача = \(\$12{,}50 = 1250\) центов. Жадный алгоритм: одна купюра $10 (остаётся 250 ц), одна $2 (остаётся 50 ц), одна монета 50 ¢ (остаётся 0). Итог: \(1 \times \$10\), \(1 \times \$2\), \(1 \times 50\,¢\) — всего 3 единицы.

Наглядное разложение сдачи на несколько купюр и множество монет со значками количества
Разобранный пример: сдача раскладывается на наименьшее число купюр и монет.

Частые вопросы

Зачем переводить сумму в центы? Работа в целых субъединицах исключает ошибки вроде 12,499999, из-за которых может появиться лишняя монета.

Что будет, если отключить какой-то номинал? Жадная раскладка всё равно выполнится по оставшимся номиналам; если выйти на ноль не удаётся, программа сообщит остаток. Чтобы гарантировать точную сдачу, оставляйте самую мелкую монету включённой.

Всегда ли жадный алгоритм оптимален? Для канонических национальных денежных систем — да. При нестандартных наборах номиналов или при отключённых номиналах он вернёт корректную, но не обязательно минимальную раскладку.

Последнее обновление: