Skip to content

資料處理 - 數字

數字處理相關語法

語法

數字處理使用 Math 語法,提供了許多數學運算功能

  • Math.round(數字) 四捨五入到整數
  • Math.ceil(數字) 無條件進位
  • Math.floor(數字) 無條件捨去
  • Math.pow(數字, 次方) 次方
  • Math.sqrt(數字) 平方根
  • Math.sign(數字) 正負數判斷,負數為 -1,0 為 0,正數為 1
  • Math.abs(數字) 絕對值
  • Math.min(數字1, 數字2, 數字3...) 取最小值
  • Math.max(數字1, 數字2, 數字3...) 取最大值
  • Math.random() 從 0 到 1 隨機取小數,包含 0,不包含1
js
Math.round(4.7)   // 5

Math.ceil(4.4)    // 5

Math.floor(4.8)   // 4

Math.pow(8, 2)    // 64

Math.sqrt(64)     // 8

Math.sign(-100)   // -1

Math.abs(-5)      // 5

Math.min(0, 150, 30, 20, -8, -200)  // -200

Math.max(0, 150, 30, 20, -8, -200)  // 150

Math.random()     // 0.123456789

TIP

取陣列的最大值與最小值可以利用 ... 展開運算子

js
const arr = [0, 150, 30, 20, -8, -200]
Math.min(...arr)  // -200
Math.max(...arr)  // 150

綜合練習

練習

從 0 到 100 隨機取一個整數

練習

製作隨機數字 function,提供最小整數和最大整數,回傳一個區間內的隨機整數

js
const rand = (min, max) => {
  // 程式碼...
}

作業

用上面練習完成的 function 製作威力彩號碼產生器
將隨機出的數字用 document.write() 顯示在網頁上
威力彩規則

  • A 區 1~38 取 6 個數字
  • B 區 1~8 取 1 個數字

練習

請寫一個 function,判斷傳入的數字是不是質數
並使用該 function 列出 1 ~ 100 間的所有質數
質數特性

  • 不能被大於 2 且小於自身平方根的數整除
  • 只能被 1 和自身整除,不能被 2 到 (num-1) 整除

挑戰

文文記性不太好,常常會忘東忘西。他也常忘記提款卡密碼,每次忘記密碼都得帶著身份證、存摺、印章親自到銀行去重設密碼,還得繳交 50 元的手續費,很是麻煩。後來他決定把密碼寫在提款卡上免得忘記,但是這樣一來,萬一提款卡掉了,存款就會被盜領。因此他決定以一個只有他看得懂的方式把密碼寫下來。

他的密碼有 6 位數,所以他寫下了 7 個大寫字母,相鄰的每兩個字母間的「距離」就依序代表密碼中的一位數。所謂「距離」指的是從較「小」的字母要數幾個字母才能數到較「大」字母。字母的大小則是依其順序而定,越後面的字母越「大」。

假設文文所寫的 7 個字母是 POKEMON,那麼密碼的第一位數就是字母 P 和 O 的「距離」,由於 P 就是 O 的下一個字母,因此,從 O 開始只要往下數一個字母就是 P 了,所以密碼的第一位數就是 1。密碼的第二位數則是字母 O 和 K 的「距離」,從 K 開始,往下數 4 個字母 (L, M, N, O) 就到了 O,所以第二位數是 4,以此類推。因此,POKEMON 所代表的密碼便是 146821。

噓!你千萬別把這個密秘告訴別人哦,要不然文文的存款就不保了。

文文可以透過 prompt 輸入文字 輸入文字後就將解密後的密碼回傳

js
const decrypt = (text) => {
  // ... 在此寫你的程式碼
}

const input = prompt('輸入文字')
console.log(decrypt(input))

測試資料

輸入輸出
POKEMON146821
TYPHOON598701

題目修改自 高中生程式解題系統