javascript中toFixed()四舍五入计算bug
|
const toFixed = (target, length) => {
const str = `${target}`; // 将调用该方法的数字转为字符串
const dot = str.indexOf('.'); // 找到小数点的位置
let decimal = str.split('.')[1];
if (dot !== -1) {
if (decimal.length === length) return str;
if (decimal.length <= length) {
// 小数位少于补零
let n = '';
for (let i = 0; i < length - decimal.length; i += 1) {
n += '0';
}
return str + n;
}
// 小数位多于做四舍五入
if (Number(decimal[length]) >= 5) {
const s = parseInt(decimal[length - 1], 10) + 1;
const d = decimal.slice(0, length - 1);
decimal = d + s.toString();
// decimal = decimal.slice(0,length-1);
return `${str.split('.')[0]}.${decimal}`;
}
decimal = decimal.split('').splice(0, length).join('');
return `${str.split('.')[0]}.${decimal}`;
}
// 整数补零
let n = '';
for (let i = 0; i < length; i += 1) {
n += '0';
}
return `${str}.${n}`;
};
|

浙公网安备 33010602011771号