import { isNumber } from "./is.js"; // 单位转换 export function convertToUnit(str, unit = 'px') { if (str == null || str === '') { return undefined; } else if (isNaN(+str)) { return String(str); } else { return `${Number(str)}${unit}`; } } /** * 数据金额格式化 * @param num 需要格式化的数字 * @param place 补全保留小数位 * @param decimal 小数位分隔符 * @param separator 千位分隔符 * @param prefix 前缀 */ export function formatNumber(num, opt = {}) { if (!num && num !== 0) { return ''; } const place = opt?.place ?? 2; const decimal = opt?.decimal ?? '.'; const separator = opt?.separator ?? ','; const prefix = opt?.prefix ?? '¥'; num = num + ''; const x = num.split('.'); let right = num.indexOf('.') > -1 ? x[1].substring(0, place) : new Array(place).fill(0).join(''); // 位数补全 if (right.length < place) { right = right + new Array(place - right.length).fill(0).join(''); } let x1 = x[0]; const x2 = decimal + right; const rgx = /(\d+)(\d{3})/; if (separator && !isNumber(separator)) { while (rgx.test(x1)) { x1 = x1.replace(rgx, '$1' + separator + '$2'); } } return prefix + x1 + x2; }