摘要 在開發中展示點贊數時,當數量級超過10000後,需要使用更加簡潔的小數式去顯現數量(例如1.22萬)。下麵就給大家分享數量小數式後保留兩位小數的實現方式。 四色五入 使用toFixed()方法處理小數的四色五入,運行示例如下: // 四色五入 var num =2.2354234234; nu ...
摘要
在開發中展示點贊數時,當數量級超過10000後,需要使用更加簡潔的小數式去顯現數量(例如1.22萬)。下麵就給大家分享數量小數式後保留兩位小數的實現方式。
四色五入
使用toFixed()方法處理小數的四色五入,運行示例如下:
// 四色五入
var num =2.2354234234;
num = num.toFixed(2);
console.log('num=', num);
運次測試結果:
不四色五入
不四色五入有兩種方案,一種是Math.floor()方法,一種是正則匹配。運行示例如下:
·Math.floor():先將小數變整數,然後再保留小數位數。
// Math.floor()
var num2 = Math.floor(2.2344234234 * 100) / 100;
console.log('num2=',num2);
運行測試結果:
·正則匹配:先將小數轉為字元串,再使用正則匹配輸出保留小數位數。
// 正則匹配
var num3 = Number(6.2344234234.toString().match(/^\d+(?:\.\d{0,2})?/));
console.log('num3=',num3);
運行測試結果:
Math.floor()方法存在精度誤差問題
Math.floor()方法容易出現精度誤差問題,例如:小數8.54保留兩位小數。具體bug運行示例如下:
// 精度誤差示例
var num4 = Math.floor(8.54*100) / 100;
console.log('實際值:8.54');
console.log('Math.floor列印的值',num4);
運行測試結果:
終極完美解決小數保留位數精度方案
先將數字(小數)轉換為字元串,然後再進行截取,最後轉回數字(小數),完美解決保留小數位數精度問題。
// 解決精度方案
var num5 = 8.54342345;
var numStr = num5.toString();
var idx = numStr.indexOf('.');
var res = Number(numStr.slice(0, idx + 3));
console.log('res=',res);
運行測試結果: