重写取余数方法,解决js精度丢失问题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function round(num, s) {
const changeVal = num.toString().split('.')[1];
// 如果传入的值是整数或者是有限小数直接返回
if (Number.isInteger(num) || num.toString().split('.')[1].length !== 16) {
return num;
}
const times = Math.pow(10, s);
let des;
// 根据无限循环小数 做四舍五入
if (Number(changeVal[0]) >= 5 && Number(changeVal[changeVal.length - 1]) >= 5) {
des = num * times + 0.5;
} else {
des = num * times;
}

des = parseInt(des, 10) / times;
return des;
}