前言
网上排的靠前的答案都写的挺复杂的复制起来都不好复制,于是就自己写了一个格式化金额函数,并且自带保留小数点后两位功能,不足后两位会自动补全。代码如下文所示。
实现逻辑
/**
* 金额千分位分割格式函数
* @param {Number|String} vlaue 需要转化的金额字符串
/
function formatAmount(value) {
//传入值不是数字直接返回0
if (!value) return '0.00'
const values = value.toString().split('.')
// 整数部分
let integerNum = values[0]
// 小数部分
let decimalNum = values[1] ? values[1] : '00'
decimalNum = decimalNum.length === 1 ? decimalNum + 0 : decimalNum
//传入值小于1000不切割
if (integerNum < 1000) {
return `${integerNum}.${decimalNum}`
}
const list = []
while (integerNum.length > 3) {
// 倒序切割
list.unshift(integerNum.slice(-3))
integerNum = integerNum.slice(0, -3)
}
// 处理剩余长度
list.unshift(integerNum)
return `${list.join(',')}.${decimalNum}`
}
编写完成后试验下执行结果:
以上就是金额千分位格式化的逻辑,你也可以根据你的需求进一步扩展或是删减函数逻辑