需求
将后端返回的金额字段,保留指定小数位、加千分位展示
一、num.toFixed(n)
- num是数字类型,返回一个字符类型的值
- 四舍六入五留双,不是我们想象中的四舍五入
- 缺少位数,可以自动补0
二、终极方案(保留小数位、加千分位)
- 可接受数字或者字符,返回字符
//millionFlag是否千分位显示
formatFloat(v, n, millionFlag = false) {
let f = Math.round(Number(v) * Math.pow(10, n)) / Math.pow(10, n);
let s = f.toString();
if (s.indexOf(".") < 0) {
s += ".";
}
for (let i = s.length - s.indexOf("."); i <= n; i++) {
s += "0";
}
// return s;
let reg = /(\d{1,3})(?=(\d{3})+(?:$|\.))/g;
if (millionFlag) {
return s.replace(reg, "$1,");
} else {
return s;
}
},
formatFloat(2342.356,2,true)//2,342.36
三、处理后返回数字类型
- 接受一个数字,返回一个数字
- 返回的数字不会补0(能补0的一定是字符)
function roundFun(value, n) {
return Math.round(value*Math.pow(10,n))/Math.pow(10,n);
}
var num1 = roundFun(5/3, 2); // 1.67
var num2 = roundFun(4, 2); // 4
var num3 = roundFun(0.015, 2); // 0.02
var num4 = roundFun(0.025, 2); // 0.03