大家在平時業務中應該經常跟小數打交道吧,有沒有被小數點的保留位數問題搞得頭疼啊。比如,保留一位小數,保留倆位小數,保留三位小數,向上取整、四舍五入等等。
而我最近在項目中正好遇到類似的問題:有的地方要求保留一位小數,有的地方要求保留倆位,有的地方要求四舍五入,有的地方要求向下取整。。。這些情形,總不能一個個來處理吧?於是乎,干脆封裝一個方法,解決上述令人頭疼的問題!話不多說,上代碼:
1 /** 2 * 3 * @param {number|string} num 需要處理的數字 4 * @param {number} n 保留位數,默認1 5 * @param {string} flag = 'ceil' || 'floor' 向上或向下保留,默認四舍五入 6 * @returns {string} 7 */ 8 function formatFloat(num, n = 1, flag) { 9 var f = parseFloat(num); 10 if (isNaN(f)) { 11 return false; 12 } 13 if (flag === 'ceil') { 14 f = Math.ceil(num * Math.pow(10, n)) / Math.pow(10, n); // n 冪 15 } else if (flag === 'floor') { 16 f = Math.floor(num * Math.pow(10, n)) / Math.pow(10, n); // n 冪 17 } else { 18 f = Math.round(num * Math.pow(10, n)) / Math.pow(10, n); // n 冪 19 } 20 var s = f.toString(); 21 var rs = s.indexOf('.'); 22 //判定如果是整數,增加小數點再補0 23 if (rs < 0) { 24 rs = s.length; 25 s += '.'; 26 } 27 while (s.length <= rs + n) { 28 s += '0'; 29 } 30 return s; 31 }
結果:
好了,如果該方法適合你,如果你經常需要處理這些小數的位數問題,將該方法用到你的項目中吧~
更多項目中常見的方法封裝,傳送門:https://github.com/wangruibin666/wang-utils
腳踏實地行,海闊天空飛~