/** * 重写js native toFixed 方法 * @param d * @returns { string | number } */ export function toFixed(d) { let s = this + '' if (!d) d = 0 d = parseInt(d) if (s.indexOf('.') == -1) s += '.' s += new Array(d + 1).join('0') if (new RegExp('^(-|\\+)?(\\d+(\\.\\d{0,' + (d + 1) + '})?)\\d*$').test(s)) { s = '0' + RegExp.$2 let pm = RegExp.$1 let a = RegExp.$3.length let b = true if (a == d + 2) { a = s.match(/\d/g) if ((pm !== '-' && parseInt(a[a.length - 1]) > 4) || (pm === '-' && parseInt(a[a.length - 1]) > 5)) { for (var i = a.length - 2; i >= 0; i--) { a[i] = parseInt(a[i]) + 1 if (a[i] == 10) { a[i] = 0 b = i != 1 } else break } } s = a.join('').replace(new RegExp('(\\d+)(\\d{' + d + '})\\d$'), '$1.$2') } if (b) s = s.substr(1) return (pm + s).replace(/\.$/, '') } return this + '' }