عدد ممیز شناور عددی است که صفر یا چند رقم پس از جداکنندهی اعشار دارد. نمونهها عبارتاند از -2.4، 0.1، 3.14، 16.984025 و 1024.0.
انواع مختلف ممیز شناور میتوانند تعداد متفاوتی رقم را پس از جداکننده ذخیره کنند؛ به این ویژگی، دقت میگویند.
C# سه نوع ممیز شناور دارد:
float: ۴ بایت (حدود ۶ تا ۹ رقم دقت). بهصورت 2.45f نوشته میشود.double: ۸ بایت (حدود ۱۵ تا ۱۷ رقم دقت). این رایجترین نوع است. بهصورت 2.45 یا 2.45d نوشته میشود.decimal: ۱۶ بایت (۲۸ تا ۲۹ رقم دقت). معمولاً هنگام کار با دادههای پولی استفاده میشود، چون دقت آن احتمال خطاهای گرد کردن را کاهش میدهد. بهصورت 2.45m نوشته میشود.همانطور که میبینید، هر نوع میتواند تعداد متفاوتی رقم ذخیره کند. برای مثال، اگر عدد پی را در یک float ذخیره کنید، تنها ۶ رقم اعشار اول ذخیره میشود (و آخرین رقم ذخیرهشده گرد میشود).
در این تمرین ممکن است بخواهید از یک حلقه استفاده کنید. راههای مختلفی برای نوشتن حلقه در C# وجود دارد، اما حلقهی while در اینجا مناسبتر است:
int x = 23;
while (x > 10)
{
// Execute logic if x > 10
x = x - 2;
}
اگر باید کد داخل حلقه دستکم یک بار اجرا شود، میتوان از حلقهی do/while استفاده کرد:
int x = 23;
do
{
// Execute body, repeating only if x > 10
x = x - 2;
} while (x > 10);
در این تمرین با حسابهای پسانداز کار میکنید. هر سال، موجودی حساب پسانداز شما بر اساس نرخ بهرهی آن بهروزرسانی میشود. نرخ بهرهای که بانک به شما میدهد به مقدار پولی که در حساب شماست (یعنی موجودی آن) بستگی دارد:
1000 دلار.1000 دلار و کمتر از 5000 دلار.5000 دلار.چهار کار پیش رو دارید که هر کدام به موجودی حساب و نرخ بهرهی آن میپردازد.
متد (static) SavingsAccount.InterestRate() را پیادهسازی کنید تا نرخ بهره را بر اساس موجودی دادهشده محاسبه کند:
SavingsAccount.InterestRate(balance: 200.75m)
// 0.5f
توجه کنید که مقدار بازگشتی از نوع float است.
متد (static) SavingsAccount.Interest() را پیادهسازی کنید تا بهره را بر اساس موجودی دادهشده محاسبه کند:
SavingsAccount.Interest(balance: 200.75m)
// 1.00375m
توجه کنید که مقدار بازگشتی از نوع decimal است.
متد (static) SavingsAccount.AnnualBalanceUpdate() را پیادهسازی کنید تا موجودی بهروزرسانیشدهی سالانه را با در نظر گرفتن نرخ بهره محاسبه کند:
SavingsAccount.AnnualBalanceUpdate(balance: 200.75m)
// 201.75375m
توجه کنید که مقدار بازگشتی از نوع decimal است.
متد (static) SavingsAccount.YearsBeforeDesiredBalance() را پیادهسازی کنید تا کمترین تعداد سال لازم برای رسیدن به موجودی مورد نظر را با بهرهی مرکب سالانه محاسبه کند:
SavingsAccount.YearsBeforeDesiredBalance(balance: 200.75m, targetBalance: 214.88m)
// 14
توجه کنید که مقدار بازگشتی از نوع int است.
وقتی بهرهی ساده را به موجودی اصل اعمال میکنید، موجودی در نرخ بهره ضرب میشود و حاصلضرب این دو، مقدار بهره است.
در مقابل، بهرهی مرکب با اعمال بهره بهصورت دورهای محاسبه میشود. در هر بار اعمال، مقدار بهره محاسبه و به موجودی اصل افزوده میشود تا محاسبات بعدی بهره روی موجودی اصل بزرگتری انجام شود.