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

自由工作者費率

學習練習

簡介

數字

許多程式語言都有特定的數字型別,用來表示不同種類的數字,但 JavaScript 只有兩種:

  • number:一種數字資料型態,採用雙精度 64 位元浮點數格式(IEEE 754)。 例如 -6、-2.4、0、0.1、1、3.14、16.984025、25、976、1024.0 和 500000。
  • bigint:一種數字資料型態,能用任意精度格式表示_整數_。 例如 -12n、0n、4n 和 9007199254740991n。

如果你需要任意精度,或是要處理極大的數字,就用 bigint 型別。 否則,number 型別通常是比較好的選擇。

數值捨入

JavaScript 有一個內建的全域物件Math,它提供各種數值捨入函式。 例如,你可以把小數向下取整(floor)或向上取整(ceil),得到最接近的整數。

Math.floor(234.34); // => 234
Math.ceil(234.34); // => 235

算術運算子

JavaScript 提供 6 種不同的運算子,用來對數字執行基本的算術運算。

  • +:加法運算子,用來求數字之和。
  • -:減法運算子,用來求兩個數字的差。
  • *:乘法運算子,用來求兩個數字的乘積。
  • /:除法運算子,用來把兩個數字相除。
2 - 1.5; //=> 0.5
19 / 2; //=> 9.5
  • %:餘數運算子,用來求相除之後的餘數。

    40 % 4; // => 0
    -11 % 4; // => -3
    
  • **:指數運算子,用來把數字提升到某個次方。

    4 ** 3; // => 64
    4 ** 1 / 2; // => 2
    

運算順序

當一行裡用到多個運算子時,JavaScript 會依照這份優先順序表所顯示的優先順序來計算。 簡單來說,在我們這個情境裡,JavaScript 用的是小學數學課學過的 PEDMAS 規則(括號、指數、除法/乘法、加法/減法)。

const result = 3 ** 3 + 9 * 4 / (3 - 1);
// => 3 ** 3 + 9 * 4/2
// => 27 + 9 * 4/2
// => 27 + 18
// => 45

簡寫賦值運算子

簡寫賦值運算子是一種更簡短的寫法,用來對變數做算術運算,並把新的值賦予同一個變數。 例如,想想兩個變數x和y。 那麼,x += y就等同於x = x + y。 通常,這裡用的會是數字,而不是變數y。 其他 5 種運算也可以用類似的寫法。

let x = 5;
x += 25; // x is now 30

let y = 31;
y %= 3; // y is now 1

說明

在這個練習中,你將撰寫程式碼,幫助一位自由工作者與客戶溝通某些專案的價格。 你將撰寫幾個工具函式,快速計算客戶所需的費用。

Note

ratePerHour變數和dayRate函式都與金錢有關。 它們的測量單位是每單位時間的金額:分別為小時和天。

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

一位客戶聯絡這位自由工作者,詢問他們的費率。 這位自由工作者說明他們**每天工作 8 小時。** 然而,這位自由工作者只知道他們在這個專案上的每小時費率。 請幫他們根據每小時費率估算日費率。

dayRate(89);
// => 712

日費率不需要取整,也不需要改成「固定」精度。

2. 根據固定預算計算工作天數

另一天,一位專案經理向這位自由工作者提議,以固定預算承接一個專案。 請根據固定預算和這位自由工作者的每小時費率,幫他們計算在預算用完之前可以工作幾天。 結果_必須_無條件捨去到最接近的整數。

daysInBudget(20000, 89);
// => 28

3. 計算大型專案的折扣費率

這位自由工作者的客戶經常雇用他們進行橫跨數個月的專案。 在這些情況下,這位自由工作者決定為每個完整月份提供折扣,其餘天數則按日費率計費。 由於你的工作與生活平衡絕佳,每個日曆月只工作 22 天,所以**每個月有 22 個可計費天數。** 請根據每小時費率、專案包含的可計費天數以及每月折扣費率,幫他們估算這類專案的成本。 折扣一律以數字傳入,其中42%會變成0.42。結果_必須_無條件進位到最接近的整數。

priceWithMonthlyDiscount(89, 230, 0.42);
// => 97972
透過 GitHub 編輯 連結會在新視窗或分頁中開啟
JavaScript Exercism

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

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