حاسبة السعر لكل 100غ
عبوة 500 غ بسعر 1.5 وكيس 2000 غ بسعر 3 تكلفان 0.3 و0.15 لكل 100 غ، فيفوز الكيس الكبير رغم سعره الأعلى على الرف. أدخل سعر كل عبوة ووزنها الصافي فيظهر الأرخص بوضوح. مجاني في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
تعمل هذه الأداة داخل متصفحك — مجانًا، ولا تُرسل بياناتك إلى أي خادم
نادرًا ما تضع رفوف البقالة عبوات متساوية جنبًا إلى جنب: علامة متجر بخمسمائة غرام، وكيس فاخر بأربعمائة غرام، وكيس جملة بкилоغرامين، كلها تعرض أسعار رف مختلفة، فالتسمية الأرخص غالبًا ليست الصفقة الأفضل. تُوحّد حاسبة السعر لكل مائة غرام كل خيار على أساس كتلة واحد، وتُرجع سعرًا وحدويًا واضحًا لكل منتج، وتُبرز الخيار الأرخص حسب التكلفة لكل مائة غرام حتى يقرر المتسوقون ومخططو الوجبات وتطبيقات المقارنة دون حساب ذهني.
ما الذي تُرسله: منتجات وأسعار وأوزان بالغرام
كل إدخال كائن بسعر رف غير سالب ووزن صافٍ موجب بالغرام. اختياريًا يوفّر name أو label أو title أو product أو sku تسمية صف مقروءة للإيصالات وجداول الواجهة؛ إن حذفت الاسم يعيّن المحرك المنتج 1 والمنتج 2 وهكذا حسب ترتيب القائمة. يلزم منتج واحد على الأقل؛ المصفوفة الفارغة تفشل في التحقق قبل أي قسمة.
تُرفض الأسعار السالبة لأن مقارنة رف عادية لا تستخدم المبالغ المستردة كأسعار وحدوية. الأسعار أو الأوزان الضخمة جدًا تُحدَّد بسقف لتبقى رياضيات isolate العامل محدودة. يعمل كل التحقق قبل حساب السعر الوحدوي، فلا تُرجع قائمة سيئة صفوفًا نصف مملوءة.
حوّل الكيلوغرامات بنفسك بالضرب في ألف قبل الاستدعاء: هذا المنتج يبقى عمدًا على أساس غرام واحد لوضوح SEO والعقود المستقرة.
الاستخدام أثناء التسوق وحدود الحساب
استدعِ حاسبة السعر لكل 100 غ المجانية في المتصفح عندما تقف في الممر أو تخطط للتسوق الأسبوعي أو تعلّم محو أمية السعر الوحدوي دون تثبيت تطبيق آخر. أبقِ القوائم ضمن أحجام تسوق عادية؛ سقف المنتجات المنشور يحمي زمن تشغيل isolate ويغطي مقارنات عربة كاملة. مدخلات المصدر تتبع قواعد الاحتفاظ نفسها لبقية عناصر parse في KIT، والنتائج آمنة للتثبيت في تجهيزات التكامل المستمر لأن الخوارزمية حتمية بالكامل بلا شبكة أو نموذج أو وصول لنظام الملفات.
وعد المنتج هو مقارنة شفافة للسعر الوحدوي على أساس مائة غرام، لا كشط حي لصفحات المنافسين—تلك النوايا تخص أدوات استخراج الأسعار ومراقبتها بمصطلحات بحث ومحركات مختلفة.
حالات الاستخدام
قرارات في ممر السوبرماركت
يُدخل المتسوقون حجمين أو ثلاثة بأسعار الرف ويرون فورًا أي خيار أرخص حقًا لكل 100 غرام قبل ملء العربة.
تخطيط الوجبات والشراء بالجملة
طهاة المنازل والمشترون بالجملة يقارنون عبوات العائلة بالأكياس الأصغر على أساس كتلة عادل عند بناء قوائم أسبوعية وتجديد المخزن.
تطبيقات الميزانية وروبوتات البقالة
تطبيقات المصاريف وروبوتات الدردشة تستدعي نقطة نهاية مدفوعة مسبقًا مستقرة بدل إعادة تنفيذ رياضيات السعر الوحدوي وحراسات الوزن الصفري في كل لغة عميل.
الأسئلة الشائعة
ماذا يحدث إن كان الوزن صفرًا أو سالبًا؟
السعر لكل 100 غ غير معرّف دون كتلة موجبة، لذا تُرفض الأوزان الصفرية والسالبة ولا تُحسب.
هل أحتاج أسماء المنتجات؟
الأسماء اختيارية. إن حذفت name (أو label/title) يسمّي المحرك الصفوف المنتج 1 والمنتج 2 وهكذا مع استمرار حساب الأسعار الوحدوية.
كيف أحسب السعر لكل 100 غرام؟
اقسم سعر الرف على الوزن بالغرامات ثم اضرب في 100. عبوة 500 غ بسعر 1.5 تكلف 0.3 لكل 100 غ، فتستطيع مقارنتها بأي حجم آخر.
ماذا لو كان وزن العبوة بالكيلوغرام؟
اضربه أولًا في 1000 وأدخل الناتج بالغرامات، فالكيس الذي يزن 2 كغ يصبح 2000 غ. توحيد كل المنتجات بالغرام هو ما يجعل المقارنة عادلة.
ماذا يحدث إذا تساوى منتجان في السعر؟
إذا تطابق السعر لكل 100 غ تمامًا، يُعدّ المنتج الأسبق في قائمتك هو الأرخص. وفي المثال تتساوى عبوتا معكرونة عند 0.3 لكل 100 غ.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/life/price-per-100g \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"products":[{"name":"Store brand pasta","price":1.5,"weight_g":500},{"name":"Premium pasta","price":1.2,"weight_g":400},{"name":"Bulk pasta","price":3,"weight_g":2000}]}'const res = await fetch("https://api.kit.forhosting.com/life/price-per-100g", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"products": [
{
"name": "Store brand pasta",
"price": 1.5,
"weight_g": 500
},
{
"name": "Premium pasta",
"price": 1.2,
"weight_g": 400
},
{
"name": "Bulk pasta",
"price": 3,
"weight_g": 2000
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/life/price-per-100g",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"products": [
{
"name": "Store brand pasta",
"price": 1.5,
"weight_g": 500
},
{
"name": "Premium pasta",
"price": 1.2,
"weight_g": 400
},
{
"name": "Bulk pasta",
"price": 3,
"weight_g": 2000
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/life/price-per-100g", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"products":[{"name":"Store brand pasta","price":1.5,"weight_g":500},{"name":"Premium pasta","price":1.2,"weight_g":400},{"name":"Bulk pasta","price":3,"weight_g":2000}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"products":[{"name":"Store brand pasta","price":1.5,"weight_g":500},{"name":"Premium pasta","price":1.2,"weight_g":400},{"name":"Bulk pasta","price":3,"weight_g":2000}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/life/price-per-100g", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"products": [
{
"name": "Store brand pasta",
"price": 1.5,
"weight_g": 500
},
{
"name": "Premium pasta",
"price": 1.2,
"weight_g": 400
},
{
"name": "Bulk pasta",
"price": 3,
"weight_g": 2000
}
]
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "life.price_per_100g",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
المحرك رياضيات حتمية خالصة: قوائم المنتجات المتطابقة تُنتج دائمًا JSON متطابقًا، بلا استدعاءات شبكة أو بذور عشوائية أو انحراف ساعة. الوزن الصفري أو السالب يفشل بـ invalid_input لأن السعر الوحدوي غير معرّف دون كتلة موجبة.
ما الذي تُرسله: منتجات وأسعار وأوزان بالغرام
أرسل جسم JSON يتضمن مصفوفة products إلزامية؛ تُقبل الأسماء البديلة items وoptions وlist وgoods عندما يستخدم عميلك اسم حقل آخر. قد يصل السعر كرقم أو سلسلة رقمية؛ تُعيَّن الأسماء البديلة cost وamount وshelf_price إلى القيمة نفسها حتى تحافظ أنظمة الدفع والكتالوج على مفاتيح مألوفة. يجب أن يكون الوزن الكتلة الصافية الصالحة للأكل أو للبيع بالغرام، لا الكرتون الخارجي؛ تُدعم الأسماء البديلة weight وgrams وmass_g وnet_weight_g وweight_grams. الوزن الصفري والسالب يرفعان invalid_input برسالة أن الوزن يجب أن يكون غرامات موجبة—الفخ الكلاسيكي عندما يترك بث الرموز الشريطية الكتلة فارغة أو معكوسة.
كيف يُحسب السعر لكل 100 غ وكيف يُختار الأرخص
لكل منتج يطبّق المحرك الصيغة المألوفة في التجزئة: السعر لكل مائة غرام يساوي سعر الرف مقسومًا على الوزن بالغرام ثم مضروبًا في مائة. قائمة منتج واحد ما زالت تُرجع ذلك المنتج كـ cheapest بتوفير صفر، وهو مفيد لخطوط الأنابيب التي تريد دائمًا نفس شكل الاستجابة. يُعاد سعر الرف مقرّبًا إلى منزلتين بأسلوب الإيصال، بينما يُرجع weight_g كالرقم الموجب المُتحقق الذي أرسلته. يتضمن كل صف نتيجة فهرسه الصفري والاسم المعروض وprice وweight_g وprice_per_100g. كائن cheapest هو الصف ذو أدنى price_per_100g؛ إن تعادل عبوتان تمامًا يفوز الإدخال الأسبق في القائمة ليكون الناتج حتميًا بالكامل. عند وجود منتجين أو أكثر، يُبلغ savings_vs_most_expensive_per_100g كم ينخفض الفائز عن أغلى سعر وحدوي على نفس أساس المائة غرام—مفيد لشارات مثل وفّر هذا المبلغ لكل مائة غرام. حقل method دائمًا price_per_100g وunit دائمًا per_100g حتى يتفرع الكود downstream دون شمّ الأشكال. المنتجات المفقودة والقوائم الفارغة وprice أو weight المفقودان والحقول غير الرقمية والوزن الصفري والسالب تفشل كلها بـ invalid_input ولا تُحسب بعد الرفض.
استخدام API والتسعير ومسارات التسوق والحدود العملية
استخدم API المدفوعة مسبقًا عندما يحتاج خدمة تخطيط وجبات أو روبوت بقالة أو مدرب ميزانية أو مساعد شراء بالجملة أو مُطبّع كتالوج إلى عقد KIT مستقر بـ $0.002 لكل عنصر ناجح؛ إخفاقات التحقق لا تستهلك الرصيد أبدًا بعد رفض المحرك. اربط هذا endpoint بمحوّلات العملة فقط عندما تتشارك كل أسعار الرف عملة واحدة—هذه القدرة لا تحوّل الصرف الأجنبي ولا تطبّق ضريبة أو عروض شراء متعدد أو خصومات ولاء. يمكن لمؤلفي SDK تعيين مصفوفة products إلى جداول مقارنة وإظهار cheapest.name مع cheapest.price_per_100g في لافتة ملخص.
أسئلة تقنية
كيف أحسب السعر لكل 100 غ لعدة منتجات؟
أرسل JSON بمصفوفة products. كل عنصر يحتاج price وweight_g (غرام). تسرد الاستجابة price_per_100g لكل صف وكائن cheapest بأدنى سعر وحدوي.
هل حاسبة السعر لكل 100 غ مجانية؟
أداة المتصفح تعمل مجانًا على جهازك. استدعاءات API تستخدم رصيد KIT المدفوع مسبقًا بـ $0.002 لكل عنصر ناجح؛ إخفاقات التحقق لا تُحسب.
ماذا إن تساوى منتجان في السعر الوحدوي؟
يُرجع أول منتج في قائمتك بذلك الحد الأدنى من price_per_100g كـ cheapest، فتُحل التعادلات حتميًا.