@monda/utils
Version:
常用处理函数
58 lines (47 loc) • 1.35 kB
JavaScript
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)
}