Répartir une somme en billets et pièces
Ce calculateur de coupures trouve une façon exacte de constituer une somme avec les billets et pièces que vous indiquez.
Lancer gratuitement
Il réduit au minimum le nombre d’éléments physiques, sans supposer une devise nationale ni appliquer le raccourci glouton habituel pour rendre la monnaie. Saisissez la somme et les coupures, y compris les valeurs décimales des pièces. Le résultat indique la quantité nécessaire pour chaque valeur, donne le nombre total d’éléments et refuse clairement les sommes impossibles à constituer exactement.
Saisissez la somme et les coupures que vous pouvez utiliser
Commencez par la somme totale à préparer, puis indiquez les valeurs des billets et pièces disponibles. Le calculateur ne dépend d’aucune devise : des valeurs comme 20, 10, 5, 1, 0.25 et 0.10 conviennent à une monnaie décimale, tandis qu’un autre ensemble peut représenter des bons, des jetons ou une caisse privée de certaines coupures. Les sommes et les coupures peuvent comporter jusqu’à deux décimales. Le calcul reste ainsi exact dans la plus petite unité monétaire, sans dérive liée aux nombres à virgule flottante. Chaque coupure doit être positive et unique. Le résultat classe les valeurs de la plus grande à la plus petite et affiche une quantité pour chacune, y compris zéro lorsqu’elle n’est pas utilisée. Vous pouvez donc le recopier facilement dans une feuille de caisse, une liste de préparation, un plan de retrait ou un relevé de rapprochement. Le calcul suppose que chaque coupure est disponible sans limite : la liste précise les valeurs utilisables, et non le nombre de billets ou de pièces réellement en stock.
Pourquoi le résultat utilise réellement le minimum d’éléments
Dans de nombreux systèmes monétaires courants, une règle simple semble fonctionner : prendre successivement la plus grande coupure qui ne dépasse pas le reliquat. Ce raccourci glouton est rapide, mais il n’est pas juste pour tous les ensembles de valeurs. Des jetons inhabituels, des coupons événementiels, des pièces étrangères ou une caisse sans coupures courantes peuvent rendre une combinaison commençant par une petite valeur plus économe. Ce calculateur emploie la programmation dynamique. Il examine les sous-totaux atteignables, mémorise le plus petit nombre d’éléments permettant d’obtenir chacun d’eux, puis reconstruit une combinaison exacte pour la somme demandée. Toutes les valeurs étant d’abord converties en unités monétaires mineures entières, les comparaisons sont exactes pour les entrées à deux décimales. Si plusieurs combinaisons ont la même taille minimale, l’ordre déterministe privilégie d’abord les grandes coupures : une entrée identique produit donc toujours la même répartition. Le calcul est plafonné pour préserver la réactivité du navigateur et de l’API. Une valeur infime associée à une somme très élevée peut dépasser la limite de travail normalisée publiée et sera refusée plutôt que traitée sans borne raisonnable.
Comprendre les échecs exacts et exploiter le résultat correctement
Il n’existe pas toujours de solution exacte. Si toutes les coupures disponibles sont des multiples de cinq centimes, par exemple, aucune quantité ne permet de constituer une somme finissant par trois centimes. Le calculateur signale alors une erreur de saisie au lieu de proposer une somme voisine, d’arrondir discrètement le total ou d’inventer une coupure. Cette distinction est essentielle pour le rapprochement de caisse, la préparation de pochettes de monnaie et les paiements contrôlés, où un léger écart reste une erreur. Une réponse valide contient la somme normalisée, le nombre total minimal d’éléments et le détail par coupure. Les quantités nulles restent visibles afin que la sortie représente l’ensemble complet fourni et puisse correspondre à une fiche d’inventaire. Avant d’appliquer le plan, gardez à l’esprit que l’algorithme considère chaque coupure comme disponible sans limite. Si votre caisse contient des quantités restreintes, comparez la proposition au stock réel ; cette capacité ne résout pas le problème distinct de l’inventaire borné. Le même calcul déterministe fonctionne dans le navigateur et via l’API au tarif de $0.002 par requête.
Cas d’usage
Préparer des enveloppes de paiement
Transformez chaque paiement exact en liste minimale de billets et pièces parmi les coupures autorisées.
Planifier le réapprovisionnement d’une caisse
Trouvez une combinaison compacte pour une somme cible lorsque seules certaines valeurs sont utilisées.
Distribuer des bons ou des jetons
Utilisez un jeu de valeurs inhabituel et repérez les sommes que les jetons disponibles ne peuvent pas représenter exactement.
Questions fréquentes
Le calculateur trouve-t-il toujours le moins de billets et pièces ?
Oui. Il examine les sous-totaux atteignables par programmation dynamique et renvoie une combinaison exacte comportant le minimum d’éléments.
Puis-je utiliser des valeurs décimales pour les pièces ?
Oui. La somme et les coupures peuvent comporter jusqu’à deux décimales, par exemple 0.25 ou 0.05.
Que se passe-t-il si la somme ne peut pas être constituée exactement ?
La requête renvoie une erreur de saisie expliquant que les coupures fournies ne permettent pas d’obtenir la somme exacte. Aucun arrondi vers une valeur proche n’est effectué.
Le calculateur tient-il compte des quantités limitées dans ma caisse ?
Non. Chaque coupure indiquée est considérée comme disponible sans limite. Les stocks ne font pas partie de cette capacité.
Pourquoi la réponse peut-elle différer du choix de la plus grande valeur d’abord ?
La méthode gloutonne peut être sous-optimale avec des coupures personnalisées. Ce calculateur teste les combinaisons et garantit un nombre minimal d’éléments.
Quel est le prix d’une requête API ?
Chaque requête API coûte $0.002. Le même calculateur déterministe est utilisable gratuitement dans le navigateur.
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/travel2/currency-cash-denomination-split \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"amount":18.85,"denominations":[10,5,2,1,0.25,0.1,0.05]}'const res = await fetch("https://api.kit.forhosting.com/travel2/currency-cash-denomination-split", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"amount": 18.85,
"denominations": [
10,
5,
2,
1,
0.25,
0.1,
0.05
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/travel2/currency-cash-denomination-split",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"amount": 18.85,
"denominations": [
10,
5,
2,
1,
0.25,
0.1,
0.05
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/travel2/currency-cash-denomination-split", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"amount":18.85,"denominations":[10,5,2,1,0.25,0.1,0.05]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"amount":18.85,"denominations":[10,5,2,1,0.25,0.1,0.05]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/travel2/currency-cash-denomination-split", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"amount": 18.85,
"denominations": [
10,
5,
2,
1,
0.25,
0.1,
0.05
]
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "travel2.currency_cash_denomination_split",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Limites
max_denominations | 100 |
max_normalized_amount | 250000 |
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |