iT邦幫忙

2024 iThome 鐵人賽

DAY 16
1
Modern Web

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

[Day16]-看著天花板你會想到什麼?我會想到Math.ceil()

  • 分享至 

  • xImage
  •  

今天要介紹的咒語Math.ceil(),在數學中也有一樣的函式ceil(x),讓我們一起來研究這個咒語吧~

今天的咒語

「寐偲,西歐!!!」

直接開始吧~

數學課

那所以ceil(x)的 ceil 是什麼意思呢?就是天花板 ceiling 的意思,應該不難想像他應該就是會取得比他高一點的值,在數學中通常稱這個函數為「上取整函數」,簡單的意思就是向上取整數。
將函數圖形p(x) = ceil(x)畫出來就會長這樣:
image
會是有如階梯一般的圖形。

值得注意的是在每個線段的最左側會是空心的(不包含),最右側是實心的(包含),例如代入1ceil(1)的值會是1,但只要比1大一點點,像是ceil(1.0000001),值就會變成2,以我的能力一時也很難講得很清楚QQ,對這個函數有興趣可以去了解看看「上取整函數」。

再來看看Math.ceil()吧!

Math.ceil()

就如同數學的ceil(x)函數,Math.ceil()也是上取整的意思,一起來看看如何使用吧!

語法

Math.ceil(x)

參數

傳入一個數字。

回傳值

他會回傳大於或等於x的最小整數,他的值會跟-Math.floor(-x)的值一樣。

規範

image
這個函式會回傳不小於x的最小整數值。
如果x已經是整數,那結果就會是x
下面還特別註記了值會跟-Math.floor(-x)的值一樣。

但是!我看到smallest(closest to -∞),整個就不高興了,都說是取大於等於他的整數了,為什麼還往負無限大靠近,不是應該往正無限大的方向嗎?

問了GPT他的回答是:

「對於正數來說,Math.ceil()的行為很清楚,會向上取整數,返回比該數字更大的整數,例如Math.ceil(4.3)會回傳5,這是往正無限大移動,因此『closest to -∞』的描述對正數來說不相關。」

「對於負數來說,Math.ceil()的行為是取比該負數大的最小整數,例如Math.ceil(-4.7)回傳-4。從數學來看,這個結果比原來的負數大,向上無限大方向移動,但還是在負數區間內。這可能就是為什麼規範使用『closest to -∞』來描述這個情況,因為負數在數線向右移動時,隨然數值變大,但仍然位於負數範圍,相對於負無限大來說,這是『最接近負無限大』的取整行為。」

image???

讓我們掌聲送給GPT貢獻了一堆廢話幫我湊字數。

如果對GPT這段話有想法的也歡迎留言討論~

我只能告訴大家我自己對這段話的理解:

smallest(closest to -∞)這段話的closest to -∞是接在smallest旁邊的,所以我認為規範應該是針對「取最小」這個行為做描述,也就是說Math.ceil()首先先取得比自己本身還大的整數,例如4.7取比它大的整數會有[5, 6, 7, ...],然後要在這些整數中取得最小的就會往「負無限大」的方向取,所以取到了5

我跟GPT聊天的最後結論:
image

說了這麼多,直接用用看吧!

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()


上一篇
[Day15]-Math.sqrt()、Math.cbrt()?我沒梗了,需要一台電鋸梗梗梗
下一篇
[Day17]-腳踏實地的Math.floor()
系列文
如何詠唱JavaScript的Math咒語30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言