Comparez le coût par portion de deux recettes
Un coût total inférieur ne signifie pas toujours un coût par portion plus faible.
Lancer gratuitement
Ce calculateur place deux recettes sur une base commune en divisant le coût total de chacune par son nombre de portions. Il affiche ensuite l'écart signé, l'écart absolu et la recette la moins chère. Vous pouvez l'utiliser pour planifier des repas, établir un devis de traiteur, choisir un menu ou comparer des fournées de tailles différentes. Saisissez les coûts dans la même devise et adoptez une définition identique de la portion afin d'obtenir un résultat pertinent.
Saisissez des totaux et des portions comparables
Commencez par le coût complet de la recette A et de la recette B. Chaque total doit couvrir les mêmes catégories de dépenses. Par exemple, n'intégrez pas l'emballage dans une recette si l'autre ne comprend que les ingrédients. Indiquez ensuite le nombre de portions réellement produit par chaque préparation complète. Une portion peut désigner une assiette, une boîte, une part ou toute autre unité cohérente, mais sa définition doit être identique pour les deux recettes. Les nombres de portions doivent être strictement positifs, car une division par zéro ne permet pas d'obtenir un coût unitaire exploitable. Les coûts totaux peuvent être nuls, notamment pour des ingrédients offerts ou un essai, mais jamais négatifs. Employez la même devise pour les deux montants : le calculateur ne convertit pas les monnaies et ne devine pas leur unité. Les valeurs décimales sont acceptées si votre méthode de planification les utilise.
Interprétez les coûts unitaires et leur écart
Le calculateur divise le coût total de la recette A par ses portions, puis effectue la même opération pour la recette B. Ces valeurs normalisées permettent une comparaison équitable entre des préparations de tailles différentes. L'écart signé correspond à la recette A moins la recette B. Une valeur négative signifie que A revient moins cher par portion, une valeur positive que B est moins chère, et zéro indique une égalité à la précision affichée. L'écart absolu donne l'ampleur de la différence sans son signe. Le champ consacré à la recette la moins chère renvoie A, B ou égalité, ce qui évite aux traitements automatisés d'interpréter eux-mêmes le signe. Les résultats sont arrondis de façon stable à douze décimales afin de supprimer le bruit des nombres flottants tout en conservant une précision utile. Les totaux et portions d'origine sont également renvoyés pour faciliter le contrôle et l'archivage.
Transformez la comparaison en décision
Le coût par portion constitue un bon repère, mais il doit être complété par le contexte. Une recette légèrement moins chère peut demander davantage de préparation, un équipement particulier, un stockage coûteux ou des ingrédients qui se conservent moins longtemps. Les portions doivent refléter ce que les convives reçoivent réellement, et non un rendement optimiste. Pour un service de traiteur, comparez la portion prévue à l'assiette et incluez toutes les dépenses nécessaires au devis. À domicile, vous pouvez confronter le même plat acheté dans deux magasins, préparé en quantités différentes, ou réalisé maison plutôt qu'acheté prêt. Pour un menu, l'écart absolu multiplié par les ventes prévues donne une estimation de l'incidence du choix, à compléter par les pertes. Conservez les données saisies avec le résultat. Le calcul est déterministe, sans accès réseau, et fournit toujours la même sortie pour une même entrée.
Cas d’usage
Comparer des recettes de traiteur
Ramenez deux préparations de tailles différentes à une portion avant de retenir l'option la plus économique.
Planifier un budget familial
Comparez des recettes maison, préparées ou alternatives même lorsque leurs rendements annoncés diffèrent.
Évaluer des variantes de menu
Mesurez l'écart par portion avant d'intégrer le travail, les pertes et la marge.
Questions fréquentes
Quel est le prix de la comparaison ?
Le tarif de l'API est de $0.002 par requête. Le calculateur du navigateur est disponible sur cette page.
Comment l'écart est-il calculé ?
L'écart signé est le coût par portion de la recette A moins celui de la recette B.
Les deux recettes peuvent-elles avoir des tailles différentes ?
Oui. C'est précisément pourquoi il faut comparer le coût par portion plutôt que le coût total.
Que se passe-t-il si le nombre de portions est nul ou négatif ?
La requête renvoie une erreur de saisie, car le calcul exige un nombre de portions positif.
Le calculateur convertit-il les devises ?
Non. Saisissez les deux coûts dans la même devise pour que la comparaison soit pertinente.
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/math/recipe-cost-per-serving-compare \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"recipe_a_total_cost":24,"recipe_a_servings":8,"recipe_b_total_cost":18,"recipe_b_servings":4}'const res = await fetch("https://api.kit.forhosting.com/math/recipe-cost-per-serving-compare", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"recipe_a_total_cost": 24,
"recipe_a_servings": 8,
"recipe_b_total_cost": 18,
"recipe_b_servings": 4
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/math/recipe-cost-per-serving-compare",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"recipe_a_total_cost": 24,
"recipe_a_servings": 8,
"recipe_b_total_cost": 18,
"recipe_b_servings": 4
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/math/recipe-cost-per-serving-compare", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"recipe_a_total_cost":24,"recipe_a_servings":8,"recipe_b_total_cost":18,"recipe_b_servings":4}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"recipe_a_total_cost":24,"recipe_a_servings":8,"recipe_b_total_cost":18,"recipe_b_servings":4}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/math/recipe-cost-per-serving-compare", 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
{
"recipe_a_total_cost": 24,
"recipe_a_servings": 8,
"recipe_b_total_cost": 18,
"recipe_b_servings": 4
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "math.recipe_cost_per_serving_compare",
"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. |