محوّل الأرقام الرومانية
انتقل بين الأعداد العادية والأرقام الرومانية في الاتجاهين: يصبح 2026 هو MMXXVI، ويُقرأ MMXXVI مجددًا على أنه 2026. تُرفض الكتابات غير القياسية بدل تخمينها، فتبقى السنوات وأرقام الأقسام صحيحة. مجاني في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
مثال محلول
- القيمة
- 1
- وضع الحساب
- To roman
- النتيجة
- I
- قيمة الإدخال
- 1
يحوّل بين الأعداد الصحيحة العربية (من 1 إلى 3999) والأرقام الرومانية في اتّجاهين.
سبعة أحرف وستة أزواج للطرح
تستخدم الأرقام الرومانية سبعة أحرف: I تساوي 1، وV تساوي 5، وX تساوي 10، وL تساوي 50، وC تساوي 100، وD تساوي 500، وM تساوي 1000. وتضع ستة أزواج حرفًا أصغر قبل حرف أكبر لطرحه: IV تساوي 4، وIX تساوي 9، وXL تساوي 40، وXC تساوي 90، وCD تساوي 400، وCM تساوي 900. ولكتابة عدد يأخذ المحوّل أكبر قيمة من هذه القيم الثلاث عشرة ما زالت تتسع، فيكتب رمزها ويطرحها، ويكرر ذلك حتى لا يبقى شيء. هكذا يصبح 2026 هو MMXXVI، ولهذا تكون النتيجة دائمًا الصيغة القياسية الأقصر.
أين ما زالت الأرقام الرومانية تظهر
تُستخدم لسنوات النشر والأفلام في شارات النهاية وعلى اللوحات وصفحات العناوين، وترقّم الأقسام والبنود بالشكل I وII وIII في المخططات والعقود. وقراءتها أعدادًا عادية تساعد على ترتيب المراجع القديمة. لا يوجد رقم للصفر، وأكبر قيمة تكتبها الرموز الكلاسيكية هي 3999 أي MMMCMXCIX. وعند القراءة تُرفض أي كتابة غير قياسية مثل IIII أو IC بدل تخمينها، حتى لا يتحول خطأ في الكتابة إلى عدد خاطئ دون أن ينتبه أحد.
معالجة الإدخال والمدى 1..3999
ولا يوجد صفر ولا رقم له، و3999 (MMMCMXCIX) هو أكبر قيمة يمكن التعبير عنها بالرموز الكلاسيكية. وتُعيد الاستجابة سلسلة الإدخال المسوّاة والنتيجة المحوَّلة.
حالات الاستخدام
سنوات حقوق النشر والطبعات
اعرض سنوات النشر أو الأفلام أرقامًا رومانية (مثلًا 2026 إلى MMXXVI) للاعتمادات ولوحات العنوان وصفحات العنوان.
ترقيم المخطّطات والبنود
ولّد علامات أقسام على نمط I وII وIII، أو حلّل مراجع مرقَّمة رومانيًّا قديمة عائدةً إلى أعداد صحيحة للفرز.
الأسئلة الشائعة
أي مدى من الأعداد مدعوم؟
الأعداد الصحيحة من 1 إلى 3999 شاملةً. ولا يوجد رقم للصفر، و3999 (MMMCMXCIX) هو أكبر قيمة كلاسيكية.
لماذا يُكتب العدد 4 على شكل IV وليس IIII؟
لأن المحوّل يكتب دائمًا الصيغة القياسية الأقصر، باستخدام أزواج الطرح التي يُطرح فيها الحرف الأصغر الموضوع قبل حرف أكبر. وهكذا نحصل على IV للعدد 4 وIX للعدد 9 وXL للعدد 40 وCM للعدد 900.
هل يوجد رقم روماني للصفر؟
لا. لا تملك الأرقام الرومانية رمزًا للصفر، لذا فأصغر قيمة يمكن تحويلها هي 1. ويقع الصفر والأعداد السالبة والكسور خارج المدى فتُرفض.
هل يمكنني كتابة الرقم الروماني بأحرف صغيرة؟
نعم. يُحوَّل النص إلى أحرف كبيرة قبل قراءته، فيعطي mmxxvi وMMXXVI النتيجة نفسها. المهم هو طريقة الكتابة: أي صيغة غير قياسية مثل IIII تُرفض.
كيف يُقرأ الرقم الروماني ليصبح عددًا عاديًا؟
من اليسار إلى اليمين: يُبحث أولًا عن زوج طرح من حرفين مثل CM أو IX، وإلا فعن حرف واحد، ثم تُجمع القيم. وهذا مفيد لترتيب المراجع القديمة المرقمة I وII وIII.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/dev/roman \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"mode":"to_roman","value":"2026"}'const res = await fetch("https://api.kit.forhosting.com/dev/roman", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"mode": "to_roman",
"value": "2026"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/roman",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"mode": "to_roman",
"value": "2026"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/roman", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"mode":"to_roman","value":"2026"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"mode":"to_roman","value":"2026"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/roman", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"mode": "to_roman",
"value": "2026"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.roman",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الحدود
min | 1 |
max | 3999 |
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
فـ mode=to_roman يحوّل عددًا إلى سلسلته الرومانية؛ وmode=to_arabic يحلّل سلسلة رومانية عائدًا إلى عدد ويرفض أي هجاء غير معياري.
تحويل جشع بالطرح
يستعمل الاتّجاهان جدول قيم مرتَّبًا واحدًا من ثلاثة عشر زوج رموز: M=1000، وCM=900، وD=500، وCD=400، وC=100، وXC=90، وL=50، وXL=40، وX=10، وIX=9، وV=5، وIV=4، وI=1. ويمشي mode=to_roman في ذلك الجدول من الأكبر إلى الأصغر، مُلحِقًا كل رمز ما دامت القيمة المتبقّية لا تقلّ عن وزنه ويطرح كلما تقدّم، فيصير 2026 هو MMXXVI ويصير 4 هو IV لا IIII. ويمسح mode=to_arabic السلسلة من اليسار إلى اليمين، مطابقًا زوج طرح من حرفين (مثل CM أو IX) قبل الرجوع إلى رمز مفرد، جامعًا الأوزان. وهذا المخطّط الجشع هو ما يجعل الإخراج دائمًا الصورة القياسية الأقصر بترميز طرحي سليم بدل تكرار جمعي.
معالجة الإدخال والمدى 1..3999
حقل value موثَّق كسلسلة لكن to_roman يقبل أيضًا عددًا صحيحًا صرفًا أو سلسلة كلها أرقام، فيقسرها بـ Number قبل التحقق من كونها عددًا صحيحًا ضمن 1..3999؛ وأي شيء خارج ذلك المدى الشامل يُطلق invalid_input. وفي to_arabic يجب أن تكون value سلسلةً؛ تُحوَّل أولًا إلى أحرف كبيرة، فيُقبَل المختلط أو الصغير مثل "mmxxvi"، ثم تُغربَل كي لا يظهر سوى الأحرف M وD وC وL وX وV وI.
تحقّق معياري صارم عند التحليل
ويرفض فحص الرحلة الكاملة هذا السلاسل المشوَّهة لكن القابلة للجمع مثل IIII أو VV أو IC، التي تقبلها المحلّلات الساذجة بصمت، لأن الهجاء المعياري الوحيد وحده هو الذي ينجو من إعادة الترميز. يفعل to_arabic أكثر من جمع الرموز: فبعد التحليل يعيد ترميز العدد بـ to_roman ويشترط أن تساوي النتيجة الإدخال المحوَّل إلى أحرف كبيرة تمامًا، ويؤكّد كذلك أن القيمة المحلَّلة تقع في 1..3999. وأي حرف شارد، أو سلسلة فارغة، أو قيمة خارج النطاق، يُطلق خطأ invalid_input مُصنَّفًا لا انهيارًا غير مُصنَّف.
حالات التكامل
التحقّق من الأرقام المدخَلة من المستخدم
استعمل to_arabic لقبول سلسلة رومانية فقط إن كُتبت بالصورة المعيارية الصارمة، رافضًا IIII أو IC.
أسئلة تقنية
هل يقبل إدخالًا رومانيًّا بأحرف صغيرة؟
نعم. يحوّل to_arabic السلسلة إلى أحرف كبيرة أولًا، فتُعامَل "mmxxvi" معاملة "MMXXVI" نفسها.
هل يقبل IIII أو IC؟
لا. بعد التحليل يعيد ترميز العدد ويشترط تطابقًا تامًّا، فالهجاء المعياري الوحيد وحده صالح؛ وتُطلق الصور غير القياسية invalid_input.
هل يمكنني تمرير العدد كسلسلة؟
بالنسبة إلى to_roman، نعم: سلسلة كلها أرقام مثل "1990" تُقسَر إلى عدد. وينتظر to_arabic سلسلة أحرف رومانية.
هل هو مجاني وكم تكلفة API؟
widget المتصفح مجاني؛ ويستعمل API رصيد KIT مدفوعًا مسبقًا يبدأ من $0.002، مع عدم احتساب المهام الفاشلة.