/** * 重写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 + '' }
/** * 数字千位符格式化 * */ export function toThousands(num) { return (num || 0).toString().replace(/(d)(?=(?:d{3}(.d*)?)+$)/g, '$1,') }