有时后端接口给的数据是小数位很长的数据,这可能会导致页面布局出问题,所以有时候可能需要前端对显示的小数位进行手动截取,JavaScript的Number类有个toFix()
的方法,可以对小数位进行截取,但是有几个问题可能无法满足需求:
- 会自动进行四舍五入
- 对没有小数位的数字也会加上对应个数的0
- 只能对数字使用,非数字(null/String等)使用会报错
这些问题导致了toFixed方法不太好用,所以有些时候需要自己对数据进行处理:
// 参数一:要截取的数字
// 参数二:要保留的小数点位数
// 返回值:Number类型的返回值
function numFormat(n, fixNum = 2){
if (!n) return 0;
let sn = '' + n;
let sa = sn.split('.');
if (sa.length <= 1) return parseFloat(sn);
if (sa[1].length > fixNum) {
const n1 = sa[1].slice(0, fixNum);
sa.splice(1, 1, n1);
return parseFloat(sa.join('.'));
}
return n;
};