今天要介紹的咒語Math.ceil()
,在數學中也有一樣的函式ceil(x)
,讓我們一起來研究這個咒語吧~
今天的咒語
「寐偲,西歐!!!」
直接開始吧~
那所以ceil(x)
的 ceil 是什麼意思呢?就是天花板 ceiling 的意思,應該不難想像他應該就是會取得比他高一點的值,在數學中通常稱這個函數為「上取整函數」,簡單的意思就是向上取整數。
將函數圖形p(x) = ceil(x)
畫出來就會長這樣:
會是有如階梯一般的圖形。
值得注意的是在每個線段的最左側會是空心的(不包含),最右側是實心的(包含),例如代入1
,ceil(1)
的值會是1
,但只要比1
大一點點,像是ceil(1.0000001)
,值就會變成2
,以我的能力一時也很難講得很清楚QQ,對這個函數有興趣可以去了解看看「上取整函數」。
再來看看Math.ceil()
吧!
就如同數學的ceil(x)
函數,Math.ceil()
也是上取整的意思,一起來看看如何使用吧!
Math.ceil(x)
傳入一個數字。
他會回傳大於或等於x
的最小整數,他的值會跟-Math.floor(-x)
的值一樣。
這個函式會回傳不小於x
的最小整數值。
如果x
已經是整數,那結果就會是x
。
下面還特別註記了值會跟-Math.floor(-x)
的值一樣。
但是!我看到smallest(closest to -∞)
,整個就不高興了,都說是取大於等於他的整數了,為什麼還往負無限大靠近,不是應該往正無限大的方向嗎?
「對於正數來說,Math.ceil()
的行為很清楚,會向上取整數,返回比該數字更大的整數,例如Math.ceil(4.3)
會回傳5
,這是往正無限大移動,因此『closest to -∞』的描述對正數來說不相關。」
「對於負數來說,Math.ceil()
的行為是取比該負數大的最小整數,例如Math.ceil(-4.7)
回傳-4
。從數學來看,這個結果比原來的負數大,向上無限大方向移動,但還是在負數區間內。這可能就是為什麼規範使用『closest to -∞』來描述這個情況,因為負數在數線向右移動時,隨然數值變大,但仍然位於負數範圍,相對於負無限大來說,這是『最接近負無限大』的取整行為。」
???
讓我們掌聲送給GPT貢獻了一堆廢話幫我湊字數。
如果對GPT這段話有想法的也歡迎留言討論~
我只能告訴大家我自己對這段話的理解:
smallest(closest to -∞)
這段話的closest to -∞
是接在smallest
旁邊的,所以我認為規範應該是針對「取最小」這個行為做描述,也就是說Math.ceil()
首先先取得比自己本身還大的整數,例如4.7
取比它大的整數會有[5, 6, 7, ...]
,然後要在這些整數中取得最小的就會往「負無限大」的方向取,所以取到了5
。
我跟GPT聊天的最後結論:
說了這麼多,直接用用看吧!
console.log(Math.ceil(0.00003)); //1
console.log(Math.ceil(-0.003)); //-0
console.log(Math.ceil(4.7)); //5
console.log(Math.ceil(-4.7)); //-4
想得到大於或等於自己本身的最大整數嗎?
寐偲,西歐!!
參考資料:
維基百科-取整函數
MDN-Math.ceil()
ECMAScript-Math.ceil()