方法1 自定义封装
例如:
converMoney(5113.1417); //返回5,113.14
converMoney(5113.1481); //返回5,113.15
converMoney(5113); //返回5,113.00
function converMoney(money) {
money=Number(money).toFixed(2);
//转字符串
let mStr = money + ""
let arr = [...mStr]
let tail = '' //小数点后面内容
let res = [] //整数部分
let mark = ''
//1. 负号判断
if (arr[0] == '-') {
mark = '-'
arr.shift()
}
//2. 查找小数点,小数部分处理
let dotIndex = arr.indexOf('.')
//存在小数点,处理小数点
if (dotIndex !== -1) {
//splice作为删除 。第一个参数表示开始位置,第二参数表示删除几个元素
tail = arr.splice(dotIndex, arr.length - dotIndex).join('')
}
//3. 整数部分处理
let rArr = arr.reverse()
for (let i = 0; i < rArr.length; i++) {
if ((i + 1) % 3 == 0 && (i + 1) < rArr.length) {
res[i] = "," + rArr[i]
} else {
res[i] = rArr[i]
}
}
//4. 最终
return mark + res.reverse().join('') + tail
}
方法2 toLocaleString方法
例如:
formatMoney(5113.1417); //返回5,113.14
formatMoney(5113.1481); //返回5,113.15
formatMoney(5113); //返回5,113.00
function formatMoney(money) {
const val = Number(money);
if (!isNaN(val)) {
return val.toLocaleString("zh", { minimumFractionDigits: 2, maximumFractionDigits: 2 });
} else {
return money;
}
}
方法3 正则方式
例如:
regFormatMoney(5113.1417); //返回5,113.14
regFormatMoney(5113.1481); //返回5,113.15
regFormatMoney(5113); //返回5,113.00
function regFormatMoney(money) {
money=Number(money).toFixed(2);
let mStr = money + ""
//?!n 匹配任何其后没有紧接指定字符串 n 的字符串
//?=n 匹配任何其后紧接指定字符串 n 的字符串。
return mStr.replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}
喜欢的话,可以给我点个赞