轨道
/
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%。
  • 余额小于1000美元时,为 0.5%。
  • 余额大于等于1000美元且小于5000美元时,为 1.621%。
  • 余额大于等于5000美元时,为 2.475%。

每年,在你的储蓄账户余额更新之前,政府允许你免税地把一定比例的钱捐给慈善机构。因为你是个好人,如果年底时你的余额为正,你会向慈善机构捐出这个金额的两倍,并向下取整到最接近的整数美元。

本练习有三个任务,每个任务都涉及你的余额和利率。

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,借助 12 个概念105 个练习 和真人导师指导,学习并掌握 Clojure,全部免费。