«عدد ممیز شناور» عددی است که صفر یا چند رقم بعد از جداکنندهی اعشار دارد.
برای مثال: -2.4، 0.1، 3.14، 5.، 16.984025 و 1024.0.
انواع مختلف اعداد ممیز شناور میتوانند تعداد متفاوتی از ارقام را بعد از جداکنندهی اعشار ذخیره کنند؛ به این ویژگی «دقت» میگویند.
Go دو نوع عدد ممیز شناور دارد:
float32: ۳۲ بیت (با دقت حدود ۶ تا ۹ رقم).float64: ۶۴ بیت (با دقت حدود ۱۵ تا ۱۷ رقم).
این نوع پیشفرض اعداد ممیز شناور است.همانطور که میبینید، هر دو نوع میتوانند تعداد متفاوتی از ارقام را ذخیره کنند.
این یعنی اگر بخواهید عدد پی را در یک float32 ذخیره کنید، فقط ۶ تا ۹ رقم اول ذخیره میشود (و رقم آخر گرد میشود).
بهطور پیشفرض، Go برای اعداد ممیز شناور از float64 استفاده میکند، مگر اینکه عدد ممیز شناور:
float32 اختصاص داده شود، یاfloat32 برگردانده شود، یاfloat32() پاس داده شود.بستهی math شامل توابع ریاضی مفید بسیاری است.
در این تمرین با حسابهای پسانداز کار میکنید. هر سال، موجودی حساب پسانداز شما بر اساس نرخ سود آن بهروزرسانی میشود. نرخ سودی که بانک به شما میدهد به مقدار پول موجود در حساب شما (یعنی موجودی آن) بستگی دارد:
0 دلار (موجودی منفیتر میشود).0 دلار و کمتر از 1000 دلار.1000 دلار و کمتر از 5000 دلار.5000 دلار.شما چهار وظیفه دارید که هر کدام به موجودی و نرخ سود آن میپردازد.
تابع InterestRate() را پیادهسازی کنید تا نرخ سود را بر اساس موجودی دادهشده محاسبه کند:
InterestRate(200.75)
// => 0.5
توجه کنید که مقدار برگشتی از نوع float32 است.
تابع Interest() را پیادهسازی کنید تا سود را بر اساس موجودی دادهشده محاسبه کند:
Interest(200.75)
// => 1.003750
توجه کنید که مقدار برگشتی از نوع float64 است.
تابع AnnualBalanceUpdate() را پیادهسازی کنید تا بهروزرسانی سالانهی موجودی را با در نظر گرفتن نرخ سود محاسبه کند:
AnnualBalanceUpdate(200.75)
// => 201.75375
توجه کنید که مقدار برگشتی از نوع float64 است.
تابع YearsBeforeDesiredBalance() را پیادهسازی کنید تا کمترین تعداد سالهای لازم برای رسیدن به موجودی موردنظر را محاسبه کند، با در نظر گرفتن این که هر سال سود به موجودی اضافه میشود.
یعنی موجودی پس از یک سال برابر است با: موجودی اولیه + سود موجودی اولیه.
موجودی پس از سال دوم برابر است با: موجودی پس از یک سال + سود موجودی پس از یک سال.
و همینطور ادامه مییابد تا وقتی که موجودی سال جاری بزرگتر یا مساوی موجودی هدف شود.
balance := 200.75
targetBalance := 214.88
YearsBeforeDesiredBalance(balance, targetBalance)
// => 14
توجه کنید که مقدار برگشتی از نوع int است.