UNPKG

@monda/utils

Version:

常用处理函数

58 lines (47 loc) 1.35 kB
import { empty } from './empty.js' import { typeOf } from './typeOf.js' /** * 格式化金额 * @param value { number | string } * @returns { string } */ export function formatMoney (value) { if (empty(value)) { return value } const valueStr = String(value) // 排除异常数值 if (!/^-?\d+(\.\d+)?$/.test(valueStr)) { return value } let fmtDecimals = 2 let fmtThousand = arguments[2] || ',' const argument = arguments[1] if (typeOf(argument, 'number')) { fmtDecimals = argument } if (typeOf(argument, 'string')) { fmtThousand = argument } // 分割成整数+小数 let [valInteger,valDecimals=''] = valueStr.split('.') // 负数 const prefix = +valInteger < 0 ? '-' : '' valInteger = String(Math.abs(+valInteger)) // 处千分位处理 if (fmtThousand) { let len = valInteger.length // 千分位个数 len = len > 3 ? len % 3 : 0 valInteger = [ len ? valInteger.substr(0, len) + fmtThousand : "" , valInteger.substr(len).replace(/(\d{3})(?=\d)/g, "$1" + fmtThousand) ].join('') } // 小数处理 valDecimals = new Array(fmtDecimals || 0).fill('').map((_ , index) => { return valDecimals.substring(index, index+1) || '0' }).join('') // 拼成完整金额 return prefix + valInteger + (empty(valDecimals) ? '' : '.' + valDecimals) }