المسارات
/
Clojure
Clojure
/
التمارين
/
الفائدة مثيرة للاهتمام
الفائدة مثيرة للاهتمام

الفائدة مثيرة للاهتمام

تمرين تعلّمي

مقدمة

العدد العشري هو عدد يحتوي على صفر أو أكثر من الأرقام بعد الفاصلة العشرية. من الأمثلة عليه -2.4 و0.1 و3.14 و16.984025 و1024.0.

يمكن لأنواع الأعداد العشرية المختلفة تخزين أعداد مختلفة من الأرقام بعد الفاصلة العشرية، ويُشار إلى ذلك باسم الدقة. وهذا يعني أن محاولة تخزين PI في single ستخزّن أول 6 إلى 9 أرقام فقط (مع تقريب الرقم الأخير).

تُقرأ الأعداد العشرية في Clojure على أنها Double؛ ومع اللاحقة M تُقرأ على أنها BigDecimal.

  • Double: 8 بايت (بدقة تبلغ نحو 15 إلى 17 رقمًا). هذا هو النوع الأكثر شيوعًا. يُكتب بالشكل 2.45.
  • BigDecimal: قيمة صحيحة غير مقيسة بدقة تعسفية، ومقياس صحيح بطول 32 بت. يُكتب بالشكل 2.45M.

التعليمات

في هذا التمرين ستعمل على حسابات التوفير. كل عام، يُحدَّث رصيد حساب التوفير الخاص بك بناءً على سعر الفائدة الخاص به. يعتمد سعر الفائدة الذي يمنحك إياه البنك على مقدار المال الموجود في حسابك (رصيده):

  • -3.213% للرصيد السالب.
  • 0.5% للرصيد الأقل من 1000 دولار.
  • 1.621% للرصيد الذي يساوي 1000 دولار أو يزيد عنها، ويقل عن 5000 دولار.
  • 2.475% للرصيد الذي يساوي 5000 دولار أو يزيد عنها.

كل عام، قبل تحديث رصيد حساب التوفير الخاص بك، تسمح لك الحكومة بالتبرع بنسبة من مالك للأعمال الخيرية، معفاة من الضرائب. ولأنك شخص طيب، إذا كان رصيدك موجبًا في نهاية العام، فإنك تتبرع بضعف هذا المبلغ للأعمال الخيرية، مقرَّبًا للأسفل إلى أقرب دولار كامل.

لديك ثلاث مهام، تتعامل كل منها مع رصيدك وسعر الفائدة الخاص به.

1. احسب سعر الفائدة

نفّذ الدالة interest-rate لحساب سعر الفائدة بناءً على الرصيد المحدد:

(interest-rate 200.75M)
;;=> 0.5

لاحظ أن القيمة المُرجَعة هي Double.

2. احسب تحديث الرصيد السنوي

نفّذ الدالة annual-balance-update لحساب تحديث الرصيد السنوي، مع أخذ سعر الفائدة في الحسبان:

(annual-balance-update 200.75M)
;;=> 201.75375M

لاحظ أن القيمة المُرجَعة هي BigDecimal.

3. احسب مقدار المال الذي ستتبرع به

نفّذ الدالة amount-to-donate لحساب مقدار المال الذي ستتبرع به للأعمال الخيرية بناءً على الرصيد والنسبة المعفاة من الضرائب التي تسمح بها الحكومة:

(def balance 550.5M)
(def tax-free-percentage 2.5)

(amount-to-donate balance tax-free-percentage)
;;=> 27

لاحظ أن القيمة المُرجَعة هي int.

تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة
Clojure Exercism

مستعد لبدء الفائدة مثيرة للاهتمام؟

سجّل في Exercism لتتعلّم وتتقن Clojure عبر 12 مفهومًا105 تمارين، وإرشاد بشري حقيقي، وكل ذلك مجانًا.