Répartissez une dépense commune en parts inégales
Un partage égal est simple, mais pas toujours juste. Des colocataires peuvent occuper des chambres de tailles différentes, des voyageurs rester un nombre différent de nuits et les membres d’un foyer convenir de contribuer selon leurs revenus.
Lancer gratuitement
Ce calculateur répartit une dépense commune à l’aide d’un poids par personne. Indiquez le total, les noms et les poids relatifs pour obtenir les montants dus avec un arrondi cohérent. Les poids peuvent représenter tout critère convenu et les attributions finales correspondent toujours au total arrondi.
Choisissez des poids qui traduisent votre accord
Un poids représente une part relative, et non nécessairement un pourcentage ou une somme d’argent. Avec les poids 1, 2 et 3, trois personnes doivent respectivement un sixième, deux sixièmes et trois sixièmes du total. Multiplier tous les poids par le même nombre ne change rien : 10, 20 et 30 définissent donc exactement la même répartition. Le calculateur convient ainsi au loyer réparti selon la taille des chambres, aux charges selon l’occupation, à une réservation de groupe selon les nuits passées ou aux dépenses du foyer selon les revenus. Convenez du sens des poids avant le calcul et appliquez la même base à tout le monde. Une personne peut avoir un poids nul si elle est volontairement exonérée de cette dépense. Cependant, au moins une valeur doit être positive. Si tous les poids sont nuls, aucune répartition proportionnelle n’est possible ; le calculateur renvoie alors une erreur de saisie au lieu d’inventer un partage égal. Les noms doivent aussi être uniques afin que le résultat reste clair dans un message ou un registre.
Comprenez l’arrondi et les totaux exacts
Une division proportionnelle produit souvent des fractions inférieures à la plus petite unité monétaire payable. Par exemple, une petite facture répartie entre trois parts pondérées peut donner des décimales périodiques. Le calculateur convertit d’abord le total selon la précision choisie, calcule chaque part proportionnelle exacte, puis attribue les plus petites unités restantes par la méthode des plus forts restes. Les personnes dont le montant non arrondi présente le plus grand reste fractionnaire reçoivent ces unités en premier. Lorsque deux restes sont égaux, l’ordre de saisie tranche, ce qui rend les exécutions répétées déterministes. Ainsi, les montants affichés totalisent toujours exactement le montant affiché : aucun centime ne disparaît ni n’est créé. Utilisez deux décimales pour les dollars ou les euros, zéro pour une comptabilité en unités entières, ou davantage si la quantité le permet. `share` indique la proportion mathématique et `owed` le montant payable après arrondi. Le total étant lui-même arrondi à la précision demandée, saisissez-le selon la précision reconnue par votre règlement.
Vérifiez et communiquez le résultat
Considérez le calcul comme l’application transparente de l’accord du groupe, et non comme l’accord lui-même. Avant de demander les paiements, vérifiez le total, la somme des poids et le poids de chaque personne. Une faute telle que 20 au lieu de 2 reste mathématiquement valide, mais peut bouleverser la répartition. La réponse présente la part normalisée et le montant dû avec chaque nom, ce qui permet d’expliquer facilement le résultat. Conservez les données saisies avec la sortie lorsque la répartition compte pour la comptabilité : les poids donnent un contexte absent des seuls montants. Pour les dépenses récurrentes, gardez une règle stable et modifiez-la ouvertement lorsque la situation évolue. La version navigateur convient à un loyer, un dîner, un voyage ou une facture occasionnelle ; l’API applique la même règle déterministe dans un outil immobilier, de voyage, un tableur ou un système financier interne pour $0.002 par requête. Aucun taux de change ni paiement n’est traité : tous les montants emploient une seule unité et seul le partage est renvoyé.
Cas d’usage
Répartir le loyer selon la chambre
Utilisez la surface relative ou une note convenue pour répartir un loyer entre colocataires.
Partager un voyage selon les nuits
Pondérez les voyageurs par leurs nuits de présence afin qu’un séjour plus court coûte moins.
Répartir les charges selon les revenus
Appliquez des poids convenus fondés sur les revenus pour distribuer une facture en toute transparence.
Questions fréquentes
Les poids doivent-ils totaliser 100 ?
Non. Ils sont relatifs et peuvent totaliser n’importe quel nombre positif.
Que se passe-t-il si tous les poids sont nuls ?
La requête renvoie une erreur de saisie, car une somme nulle ne permet aucun partage proportionnel.
Une personne peut-elle avoir un poids nul ?
Oui. Elle devra zéro si au moins une autre personne possède un poids positif.
La somme des montants dus sera-t-elle exacte ?
Oui. La méthode des plus forts restes distribue les unités d’arrondi afin que les parts égalent le total à la précision choisie.
Quel est le tarif de l’API ?
Chaque requête API coûte $0.002. Le calculateur de cette page peut fonctionner localement gratuitement.
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/calc3/split-expenses-unequal-shares \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"total":120,"people":[{"name":"Alex","weight":1},{"name":"Blair","weight":2},{"name":"Casey","weight":3}]}'const res = await fetch("https://api.kit.forhosting.com/calc3/split-expenses-unequal-shares", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"total": 120,
"people": [
{
"name": "Alex",
"weight": 1
},
{
"name": "Blair",
"weight": 2
},
{
"name": "Casey",
"weight": 3
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/calc3/split-expenses-unequal-shares",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"total": 120,
"people": [
{
"name": "Alex",
"weight": 1
},
{
"name": "Blair",
"weight": 2
},
{
"name": "Casey",
"weight": 3
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/calc3/split-expenses-unequal-shares", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"total":120,"people":[{"name":"Alex","weight":1},{"name":"Blair","weight":2},{"name":"Casey","weight":3}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"total":120,"people":[{"name":"Alex","weight":1},{"name":"Blair","weight":2},{"name":"Casey","weight":3}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/calc3/split-expenses-unequal-shares", 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
{
"total": 120,
"people": [
{
"name": "Alex",
"weight": 1
},
{
"name": "Blair",
"weight": 2
},
{
"name": "Casey",
"weight": 3
}
]
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "calc3.split_expenses_unequal_shares",
"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.
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. |