SA 發了一個 isssue,希望一個 input 輸入框中能夠限制到小數點 4 位,我很自然地使用了 toFixed(4),結果發現輸入最後一位之後,如果再輸入的數字大於等於 5,小數點後第 4 位會自動加一,也就是小數點第 5 位數四捨五入後加一到小數點第二位。
const num = 3.14156
const fixNum = num.toFixed(4);
console.log(fixNum);
// "3.1416" toFixed() 會四捨五入自動進位,返回字串
解法一 使用 Math.floor 無條件捨去
const floorNum = Math.floor(num*10000)/10000
console.log(floorNum)
// 3.1415 不會四捨五入,返回數字
解法二
const matchNum = Number(num.toString().match(/^\d+(?:\.\d{0,4})?/))
console.log(matchNum)
// 3.1415 不會四捨五入,返回數字