iT邦幫忙

2024 iThome 鐵人賽

DAY 2
2
Modern Web

如何詠唱JavaScript的Math咒語系列 第 2

[Day02]-數學中的防鎖死系統Math.abs()

  • 分享至 

  • xImage
  •  

正式開始第一天就來暖身一下吧!伏地挺身30下預備,今天要介紹的咒語是Math.abs()我叫ABS跟我唸一遍

咒語是這麼念的:寐偲,阿柏梭魯

至於為什麼被稱為數學的防鎖死系統呢?沒有,沒有人這麼稱,之後也不會有。

abs是從絕對的英文absolute縮寫而來的,用來求一個數的絕對值。

絕對值的概念相信大家都很熟悉~回想一下剛上國中的數學,大家記得一年級的第一章在說什麼嗎?沒錯!就是「數與數線」,x的絕對值可以理解成x到原點的「距離」,因為是距離,所以一定不可能是負數,結果一定會是非負數(零或是正數)!

講完絕對值就來看看這個方法怎麼使用吧:

語法

Math.abs(x)

參數

放入一個數字型別

回傳值

它會回傳傳入之引數的x的絕對值,如果x為負數或-0,將會回傳相反數-x,否則他將回傳x本身,因此這個方法永遠會回傳0或是正數,也就是非負數。

強制參數

Math.abs()方法將觸發強制轉型成數值,不能強制轉成數值的就轉成NaNMath.abs()回傳NaN

就這?讓我們來看看規範~

規範

https://ithelp.ithome.com.tw/upload/images/20240916/20169038n2Z1yUdCxB.png

這個函式將會回傳x的絕對值,結果會跟原本x的值一樣但會加上正號。

當呼叫函式時會執行以下步驟:

  1. 令一個n且值會是ToNumber(x)的結果
  2. 如果nNaN那就回傳NaN
  3. 如果n是浮點數-0,回傳浮點數+0
  4. 如果n是負無限大的浮點數,回傳正無限大的浮點數
  5. 如果n是小於浮點數-0,回傳-n
  6. 如果都不是以上,回傳n

看起來好像沒什麼特別,恩?你問說ToNumber(x)是什麼?
「關於這個,我們以後會專門做一期視頻給大家講解。」

應用

如果絕對值中只有一個數,我們就可以理解為這個數到原點的距離,那如果絕對值中是兩個數相減|a - b||b - a|,那我們就能理解成 a 到 b 的距離。

所以絕對值的各種應用不外乎就是計算距離、判斷正數負數或零、限制誤差的範圍等等...

最後就針對「限制誤差範圍」這點來做個結尾,結束漫長的一天吧:

假設今天有很多新籃球準備賣出去,但他的重量必須落在600g~650g之間(625g±25g)才能夠上架,我們可以利用絕對值來過濾出落在目標區間的項目:

const basketballWeights = [600, 624, 651, 599, 634, 645, 612];
const standardWeight = 625;
const allowedError = 25;

function getDifference(a, b) {
    return Math.abs(a - b);
}

const validWeights = basketballWeights.filter(basketballWeight => {
    return getDifference(standardWeight, basketballWeight) <= allowedError;
})


console.log(validWeights); //[600, 624, 634, 645, 612]

定義getDifference來獲取誤差值,然後利用array.prototype.filter來過濾出誤差小於25的項目,這些籃球就可以開賣啦~

所以這些籃球品質不一想取他的誤差值的時候怎麼辦呢?

寐偲,阿柏梭魯

關於Math.abs()的應用如果各位有其他想法歡迎一起來討論!

就這樣。明天見!

參考資料:


上一篇
[Day01]-以前想活得很精彩,現在覺得Math就好
下一篇
[Day03]-可以跟你要簽名嗎Math.sign()
系列文
如何詠唱JavaScript的Math咒語30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
1
橘子
iT邦新手 4 級 ‧ 2024-09-16 09:30:18

原來是阿伯縮魯阿
img
錯字來了
強制轉成數值得->強制轉成數值的

jeremykuo iT邦新手 5 級 ‧ 2024-09-16 09:43:40 檢舉

沒綽啦,希望能成功傳喚阿勃梭魯

1
Fang
iT邦新手 5 級 ‧ 2024-09-16 12:17:04

數學課第一天~清楚好懂

jeremykuo iT邦新手 5 級 ‧ 2024-09-16 20:47:30 檢舉

好懂,那考試肯定沒問題吧!

1
Chris
iT邦新手 3 級 ‧ 2024-09-16 21:11:00

籃球來的太突然

jeremykuo iT邦新手 5 級 ‧ 2024-09-17 00:36:25 檢舉

隨時都要做好籃球會突然出現的準備XDD

1
Chris
iT邦新手 3 級 ‧ 2024-09-16 21:11:01

籃球來的太突然

我要留言

立即登入留言