عدد اعشاری عددی است که صفر یا چند رقم بعد از جداکنندهی اعشار دارد. برای نمونه -2.4، 0.1، 3.14، 16.984025 و 1024.0.
F# سه نوع اعشاری دارد:
single: ۴ بایت (دقت حدود ۶ تا ۹ رقم). به شکل 2.45f نوشته میشود.float: ۸ بایت (دقت حدود ۱۵ تا ۱۷ رقم). رایجترین نوع است. به شکل 2.45 نوشته میشود.decimal: ۱۶ بایت (دقت ۲۸ تا ۲۹ رقم). معمولاً زمانی استفاده میشود که با دادههای مالی کار میکنید، چون دقت آن منجر به خطاهای گرد کردن کمتری میشود. به شکل 2.45m نوشته میشود.انواع مختلف اعداد اعشاری میتوانند تعداد متفاوتی رقم بعد از جداکنندهی اعشار ذخیره کنند. به این ویژگی، دقت آن گفته میشود. یعنی اگر بخواهید عدد PI را در یک single ذخیره کنید، فقط ۶ تا ۹ رقم اول ذخیره میشود (و رقم آخر گرد میشود).
در این تمرین با حسابهای پسانداز کار میکنید. هر سال، موجودی حساب پسانداز شما بر اساس نرخ سود آن بهروزرسانی میشود. نرخ سودی که بانک به شما میدهد به مقدار پول موجود در حساب شما (موجودی آن) بستگی دارد:
1000 دلار.1000 دلار و کمتر از 5000 دلار.5000 دلار.هر سال دولت به شما اجازه میدهد درصدی از پولتان را بهصورت معاف از مالیات به امور خیریه اهدا کنید. چون آدم خوبی هستید، اگر موجودی شما در پایان سال مثبت باشد، درصد معاف از مالیات را برمیدارید و آن را دو برابر میکنید و به نزدیکترین دلار کامل به پایین گرد میکنید. پرداخت مالیات روی نیمهی دوم این اهدا برایتان مهم نیست.
سه وظیفه دارید که هرکدام به موجودی شما و نرخ سود آن میپردازد.
تابع interestRate را پیادهسازی کنید تا نرخ سود را بر اساس موجودی دادهشده محاسبه کند:
interestRate 200.75m
// => 0.5f
توجه کنید که مقدار برگشتی یک single است.
متد interest را پیادهسازی کنید تا سود را بر اساس موجودی دادهشده محاسبه کند:
interest 200.75m
// => 1.00375m
توجه کنید که مقدار برگشتی یک decimal است.
تابع annualBalanceUpdate را پیادهسازی کنید تا بهروزرسانی سالانهی موجودی را با در نظر گرفتن نرخ سود محاسبه کند:
annualBalanceUpdate 200.75m
// => 201.75375m
توجه کنید که مقدار برگشتی یک decimal است.
تابع amountToDonate را پیادهسازی کنید تا بر اساس موجودی و درصد معاف از مالیاتی که دولت مجاز میداند، محاسبه کند چه مقدار پول باید به امور خیریه اهدا شود:
let balance = 550.5m
let taxFreePercentage = 2.5
amountToDonate balance taxFreePercentage
// => 27
توجه کنید که مقدار برگشتی یک int است.