[ JS ]保留2位小數需注意事項

JS保留兩位小數,首先想到的是toFixed(),還有什麼方法呢?

  1. toFixed(2) 四捨五入
var num = 13.999;
var numToturn = num.toFixed(2);
console.log(numToturn)//=>14.00
  1. Math.floor(num*100)/100 不會四捨五入
var num = 13.999;
var numToturn = Math.floor(num*100) / 100 ;
console.log(numToturn) //=> 13.99

注意:Math.floor()容易出現精度問題,本身已經保留了兩位小數的不要用
舉個最簡單例子:
對小數 8.54 保留兩位小數(雖然它已經保留了 2 位小數):
Math.floor(8.54*100)/100 // 輸出結果爲 8.53, 注意是 8.53 而不是 8.54。
所以這種函數慎用。

  1. 解決精度問題slice
var num = 88.53 ;
var numStr = num.toString();
var index = numStr.indexOf('.');
console.log(index) //小數點的下標 = 小數點前面有幾個數字
let result = Number(numStr.slice(0, index + 3));
console.log(result) //=>88.53

自己可以根據需求來解決:

  • 如果需要四捨五入保留兩位小數:toFixed(2);
  • 不需要四捨五入,還要精度 :則:slice的這種解決,(1)利用indexOf確定小數點前面有幾位數,然後加上3就可以了
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章