حاسبة الماكروز
وزّع هدف السعرات اليومي على البروتين والكربوهيدرات والدهون: 2000 سعرة بنسب 30 و40 و30 تعطي 150 غرامًا من البروتين و200 غرام من الكربوهيدرات و66.7 غرامًا من الدهون. واختر نسبك الخاصة ما دام مجموعها 100. مجاني في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
مثال محلول
- السعرات اليومية
- 2,000
- البروتين (%)
- 30
- الكربوهيدرات (%)
- 40
- الدهون (%)
- 30
- البروتين (غ)
- 150
تقسم مجموع السعرات اليومي إلى بروتين وكربوهيدرات ودهون، وتُعيد الغرامات والسعرات لكل منها من مدخلات النسب المئوية، مستعملةً 4 سعرات/غ للبروتين والكربوهيدرات و9 سعرات/غ للدهون.
من السعرات إلى الغرامات بخطوتين
تبدأ خطة الماكروز برقم واحد هو هدف السعرات اليومي، وبثلاث نسب تحدد ما يأتي من البروتين والكربوهيدرات والدهون. أولًا تُطبَّق كل نسبة على المجموع: مع 2000 سعرة والتوزيع الافتراضي 30 و40 و30 بالمئة تحصل على 600 سعرة من البروتين و800 من الكربوهيدرات و600 من الدهون. ثم تتحول الطاقة إلى وزن بالمعاملات المعتادة: 4 سعرات لكل غرام من البروتين والكربوهيدرات، و9 سعرات لكل غرام من الدهون. والنتيجة 150 غرامًا من البروتين و200 من الكربوهيدرات و66.7 من الدهون.
أخطاء شائعة عند توزيع الماكروز
القسمة على 4 لكل النسب هي الخطأ الكلاسيكي، فالدهون تحمل أكثر من ضعف الطاقة في الغرام، ومعاملتها كالبروتين تضخم عدد الغرامات. ومن الأخطاء أيضًا نسب لا يساوي مجموعها 100 تمامًا، وهنا تُرفض بدل تمديدها بصمت، فلا يختبئ خطأ كتابي داخل الخطة. ويجب أن تقع كل نسبة بين 0 و100، وأن يكون هدف السعرات أكبر من صفر. وتُقرَّب النتائج إلى منزلة عشرية واحدة افتراضيًا، ويمكنك اختيار صفر إلى منزلتين.
كيف يُحسب التقسيم
ومع القيم الافتراضية 30/40/30 على هدف 2000 سعرة، يعطي ذلك 600 و800 و600 سعرة، تصير 150 غ بروتينًا و200 غ كربوهيدرات و66.7 غ دهونًا، مطابقةً للمثال المشحون تمامًا. وتُعيد الاستجابة مجموع السعرات والنسب الثلاث كي يخزّن المستدعي خطة الماكروز الكاملة من طلب واحد دون إعادة حساب أي شيء في جانب العميل.
النسب المئوية والقيم الافتراضية وقاعدة المجموع-100
ويجب أن تجمع الحصص الثلاث إلى 100 ضمن هامش 1e-9؛ فإن لم تفعل، فشل الاستدعاء برسالة تفيد بأنه يجب أن تجمع النسب المئوية إلى 100. وذلك الهامش ضيّق عمدًا، فتنجح 30/40/30 بينما تُرفض 30/40/29 بدل أن يُعاد تحجيمها بصمت. ويجب أن تكون calories نفسها عددًا منتهيًا أكبر من صفر تمامًا.
ولأن كل فرع حتميّ، تُعيد المدخلات نفسها دائمًا غرامات وسعرات متطابقة، مما يجعل النتائج آمنة للتخزين المؤقّت أو لإعادة الاستعمال تثبيتات انحدار.
حالات الاستخدام
تطبيقات التغذية والحمية
حوّل هدف سعرات المستخدم ونسبة الماكروز المختارة إلى خطة يومية غرامًا غرامًا دون إرسال الصيغة إلى العميل.
الأسئلة الشائعة
ماذا يحدث إن أرسلت calories فقط؟
يستعمل التقسيم الافتراضي 30% بروتينًا و40% كربوهيدرات و30% دهونًا، فتُعيد قيمة calories واحدة تفصيلًا كاملًا للماكروز.
لماذا لا تطابق الغرامات مضروبةً في أربعة السعرات تمامًا؟
تُقرَّب الغرامات والسعرات كلٌّ على حدة من قيمة الطاقة غير المقرَّبة، فقد تختلف صيغتاهما المقرَّبتان اختلافًا طفيفًا عن عمد.
كيف أحسب غرامات البروتين من السعرات؟
اضرب هدف السعرات في نسبة البروتين ثم اقسم على 4، وهي طاقة الغرام الواحد. فمع 2000 سعرة و30 بالمئة بروتينًا تحصل على 600 سعرة، أي 150 غرامًا من البروتين يوميًا.
لماذا تُقسم الدهون على 9 لا على 4؟
لأن كل غرام من الدهون يعطي 9 سعرات، بينما يعطي غرام البروتين أو الكربوهيدرات 4 سعرات فقط. لذلك فإن 600 سعرة من الدهون لا تتجاوز 66.7 غرامًا، مقابل 150 غرامًا للطاقة نفسها من البروتين.
ماذا يحدث إذا لم يكن مجموع نسبي 100؟
يُرفض التوزيع بدل إعادة ضبطه بصمت. فتركيبة مثل 30 و40 و29 لا تُقبل، لذا عدّل إحدى النسب حتى يصبح مجموع الثلاث 100 تمامًا ثم أعد المحاولة.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/dev/macro-calculator \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"calories":2000}'const res = await fetch("https://api.kit.forhosting.com/dev/macro-calculator", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"calories": 2000
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/macro-calculator",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"calories": 2000
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/macro-calculator", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"calories":2000}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"calories":2000}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/macro-calculator", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"calories": 2000
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.macro_calculator",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
كيف يُحسب التقسيم
ويضرب calories في كل نسبة مئوية على 100 لإيجاد protein_kcal وcarb_kcal وfat_kcal، ثم يحوّل الطاقة إلى كتلة باستعمال معاملات Atwater: grams = kcal / 4 للبروتين، وkcal / 4 للكربوهيدرات، وkcal / 9 للدهون.
النسب المئوية والقيم الافتراضية وقاعدة المجموع-100
قيمة protein_percent الافتراضية 30، وcarb_percent هي 40، وfat_percent هي 30، فيُعيد تمرير calories وحدها تقسيمًا متوازنًا. ويجب أن تكون كل نسبة مئوية عددًا منتهيًا بين 0 و100 بما فيهما، مفحوصةً حقلًا حقلًا، وأي قيمة خارج النطاق تُطلق invalid_input تسمّي ذلك الحقل.
التقريب والمخرجات الرقمية الستة
معامل decimals الاختياري قيمته الافتراضية 1 ويجب أن يكون عددًا صحيحًا من 0 إلى 2؛ وأي شيء غير ذلك يُطلق invalid_input. ولأن الغرامات والسعرات تُقرَّب على حدة، فإن protein_g مضروبًا في 4 لن يعيد دائمًا اشتقاق protein_kcal المقرَّب؛ إذ يأتي الرقمان من قيمة الطاقة غير المقرَّبة. وبعد التقريب، يُعاد فحص كل حقل رقمي من حيث الانتهاء، وأي نتيجة غير منتهية تُطلق invalid_input، فيكون الإخراج دائمًا كائن JSON نظيفًا مكتمَل الحقول بكل أرقام الماكروز الستة.
حالات التكامل
أدوات إعداد الوجبات والتدريب
ولّد أهداف البروتين والكربوهيدرات والدهون لعملاء كثيرين دفعةً واحدة عبر API، لكل منهم تقسيمه المئوي الخاصّ.
محتوى اللياقة والحاسبات
ضمّن widget المجاني كي يجرّب الزوّار نسبًا مثل 40/40/20 ويروا الغرامات تتحدّث حتميًّا.
أسئلة تقنية
أي معاملات سعرات-لكل-غرام تُستعمل؟
4 سعرات لكل غرام للبروتين والكربوهيدرات و9 سعرات لكل غرام للدهون، وهو تحويل Atwater المعياري المطبَّق في lib.js.
هل يجب أن تجمع النسب المئوية إلى 100؟
نعم. يجب أن تجمع protein_percent وcarb_percent وfat_percent إلى 100 ضمن 1e-9 وإلا أعاد الاستدعاء خطأ invalid_input.
هل هي مجانية وكم تكلفة API؟
widget المتصفح مجاني (tier A) ويشغّل النواة نفسها؛ وتُفوتر استدعاءات API لكل طلب ناجح من $0.002.