Elixir 中有两种不同的数字:整数和浮点数。
整数就是没有小数部分的数字。
integer = 3
# => 3
浮点数的小数点后面有一位或多位数字。它们采用 64 位双精度浮点格式。
float = 3.45
# => 3.45
在Integer和Float模块中,你可以找到一些用于处理这些类型的有用函数。基本算术运算符定义在Kernel模块中。
整数和浮点数可以混合在同一个算术表达式中使用。在表达式中使用浮点数,可以确保结果也是浮点数。
2 * 3
# => 6
2 * 3.0
# => 6.0
不过,做除法时,结果始终是浮点数,即使只用整数也是这样。
6 / 2
# => 3.0
要把浮点数转换为整数,可以用trunc/1舍去小数部分。
在这个练习中,你将编写代码,帮助自由职业者与项目经理沟通。 你的任务是提供几个实用工具函数,用来快速计算日费率和月费率,也可以按给定的折扣计算。
我们先约定自由职业者和项目经理之间的几条规则:
有时,自由职业者会对日费率提供折扣(例如给最忠实的客户或非营利客户)。
折扣用表示百分比的小数来建模,例如25.0(25%)。
实现一个名为daily_rate的函数,根据作为形参传入的小时费率计算日费率。
约定规定,一天有 8 个可计费小时。
FreelancerRates.daily_rate(60)
# => 480.0
返回的日费率应为浮点数。
实现一个apply_discount函数,计算应用折扣后的价格。
FreelancerRates.apply_discount(150, 10)
# => 135.0
返回的值应始终是浮点数,不做任何舍入。
实现一个monthly_rate函数,计算折扣后的月费率。
它接收两个形参:小时费率和折扣百分比。
FreelancerRates.monthly_rate(77, 10.5)
# => 12130
返回的月费率应向上取整(取上限)为最接近的整数。
实现一个days_in_budget函数,接收预算、小时费率和折扣,计算这些预算能覆盖多少个完整工作日。
FreelancerRates.days_in_budget(20000, 80, 11.0)
# => 35.1
返回的天数应向下取整(取下限)到一位小数。