學習軌道
/
Elixir
Elixir
/
練習
/
自由工作者費率
自由工作者費率

自由工作者費率

學習練習

簡介

整數

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捨去小數部分。

說明

在這個練習中,你會撰寫程式碼,協助自由工作者與專案經理溝通。你的任務是提供幾個工具,以便快速計算每日與每月費率,並可選擇套用指定的折扣。

我們先為自由工作者與專案經理之間建立幾條規則:

  • 每日費率是每小時費率的 8 倍。
  • 一個月有 22 個可計費工作日。

有時,自由工作者會針對每日費率提供折扣(例如給最忠誠的客戶或非營利客戶)。

折扣以代表百分比的小數來表示,例如 25.0(25%)。

1. 根據每小時費率計算每日費率

實作一個名為daily_rate的函式,接收每小時費率作為參數,並計算每日費率。合約定義一天有 8 個可計費小時。

FreelancerRates.daily_rate(60)
# => 480.0

回傳的每日費率應為浮點數。

2. 計算折扣後的價格

實作一個apply_discount函式,計算折扣後的價格。

FreelancerRates.apply_discount(150, 10)
# => 135.0

回傳值應一律為浮點數,且不進行任何四捨五入。

3. 根據每小時費率和折扣計算每月費率

實作一個monthly_rate函式,計算折扣後的每月費率。它接收兩個參數:每小時費率和折扣百分比。

FreelancerRates.monthly_rate(77, 10.5)
# => 12130

回傳的每月費率應無條件進位(取上界)至最接近的整數。

4. 根據預算、每小時費率和折扣計算完整工作天數

實作一個days_in_budget函式,接收預算、每小時費率和折扣,並計算這樣能涵蓋多少個完整的工作天。

FreelancerRates.days_in_budget(20000, 80, 11.0)
# => 35.1

回傳的天數應無條件捨去(取下界)至小數點後一位。

透過 GitHub 編輯 連結會在新視窗或分頁中開啟
Elixir Exercism

準備好開始 自由工作者費率 了嗎?

註冊 Exercism,透過 58 個概念168 個練習 和真人引導來學習並精通 Elixir,全部免費。