هناك نوعان مختلفان من الأعداد في Elixir: الأعداد الصحيحة والأعداد العشرية.
الأعداد الصحيحة هي أعداد بلا كسور.
integer = 3
# => 3
الأعداد العشرية هي أعداد بها رقم واحد أو أكثر بعد الفاصلة العشرية. وهي تستخدم صيغة الأعداد العائمة ذات الدقة المزدوجة بسعة 64 بت.
float = 3.45
# => 3.45
في وحدتي Integer وFloat تجد بعض الدوال المفيدة للتعامل مع هذين النوعين. أما عوامل الحساب الأساسية فمعرّفة في وحدة Kernel.
يمكن خلط الأعداد الصحيحة والأعداد العشرية معًا في تعبير حسابي واحد. واستخدام عدد عشري في تعبير يضمن أن تكون النتيجة عددًا عشريًا أيضًا.
2 * 3
# => 6
2 * 3.0
# => 6.0
لكن عند إجراء القسمة، ستكون النتيجة دائمًا عددًا عشريًا، حتى لو استُخدمت أعداد صحيحة فقط.
6 / 2
# => 3.0
لتحويل عدد عشري إلى عدد صحيح، يمكنك التخلص من الجزء العشري باستخدام trunc/1.
في هذا التمرين، ستكتب كودًا لمساعدة مستقل على التواصل مع مدير مشروع. مهمتك هي توفير بعض الأدوات المساعدة لحساب المعدلات اليومية والشهرية بسرعة، مع خصم محدَّد بشكل اختياري.
نضع أولًا بعض القواعد بين المستقل ومدير المشروع:
أحيانًا يعرض المستقل تطبيق خصم على معدله اليومي (مثلًا لعملائه الأكثر ولاءً أو للعملاء غير الربحيين).
تُمثَّل الخصومات كأعداد عشرية تمثل النسب المئوية، على سبيل المثال 25.0 (25%).
نفّذ دالة باسم daily_rate لحساب المعدل اليومي بمعلومية معدل الساعة كمعامل.
يحدد العقد أن اليوم يحتوي على 8 ساعات قابلة للفوترة.
FreelancerRates.daily_rate(60)
# => 480.0
يجب أن يكون المعدل اليومي المُرجَع عددًا عشريًا.
نفّذ دالة apply_discount لحساب السعر بعد تطبيق خصم.
FreelancerRates.apply_discount(150, 10)
# => 135.0
يجب أن تكون القيمة المُرجَعة عددًا عشريًا دائمًا، دون تقريب بأي شكل.
نفّذ دالة monthly_rate لحساب المعدل الشهري بعد الخصم.
تأخذ معاملين: معدل الساعة والخصم بالنسبة المئوية.
FreelancerRates.monthly_rate(77, 10.5)
# => 12130
يجب تقريب المعدل الشهري المُرجَع لأعلى (أخذ السقف) إلى أقرب عدد صحيح.
نفّذ دالة days_in_budget تأخذ الميزانية ومعدل الساعة والخصم، وتحسب عدد أيام العمل الكاملة التي تغطيها.
FreelancerRates.days_in_budget(20000, 80, 11.0)
# => 35.1
يجب تقريب عدد الأيام المُرجَع لأسفل (أخذ الأرضية) إلى منزلة عشرية واحدة.
سجّل في Exercism لتتعلّم وتتقن Elixir عبر 58 مفهومًا168 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.