مسیرها
/
Go
Go
/
تمرین‌ها
/
بهره جالب است
بهره جالب است

بهره جالب است

تمرین یادگیری

مقدمه

«عدد ممیز شناور» عددی است که صفر یا چند رقم بعد از جداکنندهی اعشار دارد. برای مثال: -2.4، 0.1، 3.14، 5.، 16.984025 و 1024.0.

انواع مختلف اعداد ممیز شناور می‌توانند تعداد متفاوتی از ارقام را بعد از جداکنندهی اعشار ذخیره کنند؛ به این ویژگی «دقت» می‌گویند.

Go دو نوع عدد ممیز شناور دارد:

  • float32: ۳۲ بیت (با دقت حدود ۶ تا ۹ رقم).
  • float64: ۶۴ بیت (با دقت حدود ۱۵ تا ۱۷ رقم). این نوع پیش‌فرض اعداد ممیز شناور است.

همان‌طور که می‌بینید، هر دو نوع می‌توانند تعداد متفاوتی از ارقام را ذخیره کنند. این یعنی اگر بخواهید عدد پی را در یک float32 ذخیره کنید، فقط ۶ تا ۹ رقم اول ذخیره می‌شود (و رقم آخر گرد می‌شود).

به‌طور پیش‌فرض، Go برای اعداد ممیز شناور از float64 استفاده می‌کند، مگر اینکه عدد ممیز شناور:

  1. به متغیری با نوع float32 اختصاص داده شود، یا
  2. از تابعی با نوع بازگشتی float32 برگردانده شود، یا
  3. به‌عنوان آرگومان به تابع float32() پاس داده شود.

بسته‌ی math شامل توابع ریاضی مفید بسیاری است.

دستورالعمل‌ها

در این تمرین با حساب‌های پس‌انداز کار می‌کنید. هر سال، موجودی حساب پس‌انداز شما بر اساس نرخ سود آن به‌روزرسانی می‌شود. نرخ سودی که بانک به شما می‌دهد به مقدار پول موجود در حساب شما (یعنی موجودی آن) بستگی دارد:

  • 3.213٪ برای موجودی کمتر از 0 دلار (موجودی منفی‌تر می‌شود).
  • 0.5٪ برای موجودی بزرگ‌تر یا مساوی 0 دلار و کمتر از 1000 دلار.
  • 1.621٪ برای موجودی بزرگ‌تر یا مساوی 1000 دلار و کمتر از 5000 دلار.
  • 2.475٪ برای موجودی بزرگ‌تر یا مساوی 5000 دلار.

شما چهار وظیفه دارید که هر کدام به موجودی و نرخ سود آن می‌پردازد.

1. محاسبه‌ی نرخ سود

تابع InterestRate() را پیاده‌سازی کنید تا نرخ سود را بر اساس موجودی داده‌شده محاسبه کند:

InterestRate(200.75)
// => 0.5

توجه کنید که مقدار برگشتی از نوع float32 است.

2. محاسبه‌ی سود

تابع Interest() را پیاده‌سازی کنید تا سود را بر اساس موجودی داده‌شده محاسبه کند:

Interest(200.75)
// => 1.003750

توجه کنید که مقدار برگشتی از نوع float64 است.

3. محاسبه‌ی به‌روزرسانی سالانه‌ی موجودی

تابع AnnualBalanceUpdate() را پیاده‌سازی کنید تا به‌روزرسانی سالانه‌ی موجودی را با در نظر گرفتن نرخ سود محاسبه کند:

AnnualBalanceUpdate(200.75)
// => 201.75375

توجه کنید که مقدار برگشتی از نوع float64 است.

4. محاسبه‌ی تعداد سال‌های لازم برای رسیدن به موجودی موردنظر

تابع YearsBeforeDesiredBalance() را پیاده‌سازی کنید تا کمترین تعداد سال‌های لازم برای رسیدن به موجودی موردنظر را محاسبه کند، با در نظر گرفتن این که هر سال سود به موجودی اضافه می‌شود. یعنی موجودی پس از یک سال برابر است با: موجودی اولیه + سود موجودی اولیه. موجودی پس از سال دوم برابر است با: موجودی پس از یک سال + سود موجودی پس از یک سال. و همین‌طور ادامه می‌یابد تا وقتی که موجودی سال جاری بزرگ‌تر یا مساوی موجودی هدف شود.

balance := 200.75
targetBalance := 214.88
YearsBeforeDesiredBalance(balance, targetBalance)
// => 14

توجه کنید که مقدار برگشتی از نوع int است.

ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
Go Exercism

آماده‌اید بهره جالب است را شروع کنید؟

در Exercism ثبت‌نام کنید تا Go را همراه با 34 مفهوم166 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.