iT邦幫忙

2024 iThome 鐵人賽

DAY 18
1
Modern Web

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

[Day18]-斬斷小數點的連結Math.trunc()

  • 分享至 

  • xImage
  •  

[Day18]-斬斷小數點的連結Math.trunc()

前兩天分別介紹了Math.ceil()Math.floor,所以今天決定介紹一個跟他們兩個「有點關係」的Math.trunc(),那他們究竟有什麼關係呢?讓我們唸一下咒語就開始吧!

「寐偲,創給!!」

Math.trunc()

Math.trunctrunc似乎不是一個單字,上網搜尋後發現是truncate,「截短」的意思,就如同這個函式的行為一般,他會將數字的小數部分捨去,只保留整數部分。

語法

Math.trunc(x)

參數

傳入一個數字。

回傳值

它會回傳x的整數部分。

規範

image
這個函式會回傳x的整數部分,刪除任何小數部分。
如果x已經是整數就回傳x

最後一句描述是「回傳一個方向指向+0之最接近n的整數。」

也就是說正數的時候會往左(負無限大方向)找整數;負數時往右(正無限大方向)找整數。

那為什麼我會在今天介紹Math.trunc()呢?介紹完後不知道各位有沒有察覺到什麼,沒錯!聰明的你肯定覺得大部分狀況好像都能用前幾天介紹的Math.ceil()Math.floor()實現,跟大家說一下我的觀察好了!

Math.trunc()在「正數」情況捨去小數部分後行為跟Math.floor()一樣。
Math.trunc()在「負數」情況捨去小數部分行為跟Math.ceil()一樣。

toFixed?

講到捨棄小數部分,肯定有些人會提到另一個屬於NumbermethodtoFixed()吧!雖然功能類似,但他們的行為不太一樣,讓我們稍微提一下toFixed()吧!

toFixed()可以在參數中放入你想要保留小數點後幾位數,不填就是預設0,也就是捨棄所有小數部分,但捨棄的機制會順便做四捨五入的處理,且最後回傳的結果會是字串,所以使用時機還是會與Math.trunc()有所區別。

最後來詠唱一下Math.trunc()就結束輕鬆的一天吧:

console.log(Math.trunc(0.00234234)); //0
console.log(Math.trunc(3)); //3
console.log(Math.trunc(-0.32351)); //-0
console.log(Math.trunc(-Infinity)); //-Infinity 

「寐偲,創給!!」

各位明天見~
參考資料
MDN-Math.trunc()
ECMAScript-Math.trunc()
MDN-Number.prototype.toFixed()


上一篇
[Day17]-腳踏實地的Math.floor()
下一篇
[Day19]-輪到你的回合。Math.round()
系列文
如何詠唱JavaScript的Math咒語30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
Chris
iT邦新手 4 級 ‧ 2024-10-17 15:16:57

別再用 parseInt 做 Math.trunc 做的事了 (嗎?)

  • parseInt, parseFloat 是 String to Number
  • Number.prototype.toFixed 是 Number to String

我要留言

立即登入留言