取小数点后两位:打造一个自己的toFixed
0. 起因
toFixed用的银行家算法
四舍六入五考虑,五后非空就进一,五后为空看奇偶,五前为偶应舍去,五前为奇要进一
1. 封装的toFixedNumber
toFixedNumber(num, point) {
let str = (num + "").split(""),
count = 0;
let numArr = str.reduce((prev, cur) => {
if (count < point + 1) {
prev.push(cur);
if (prev.includes(".")) {
count++;
}
} else {
if (count >= 5) {
prev.push(prev.pop() >= 5 ? prev.pop() + 1 : prev.pop());
}
}
return prev;
}, []);
return numArr.join("");
},
2. 使用与注意
if (key.sum === null) {
key.sum = 0;
} else {
key.sum = this.toFixedNumber(key.sum, 2);
}
- sum: 386.28000000000003 => 386.28
3. Math.round
Math.round
是js内置的取四舍五入的方法,传入的可以是数字或者字符串
MDN手册
React中的状态提升
参考
人生到处知何似,应似飞鸿踏雪泥。