这是我参与8月更文挑战的第4天,活动详情查看: 8月更文挑战
没有小数
这种情况相对来说比较简单,我们先去判断长度是否为3,如果为3我们可以直接返回数字字符串,入如不为三我们开始求数组的余数,如果我们可以被三整除的说则说明我们当前需用考虑超出的部分,只需要三三等分再用都好隔开即可;如果我们当前数组不能被3整除,那我们将余数部分剔除,再将剩余部分三三等分使用逗号隔开。
注意正则表单时的使用,我们使用正则表达式将字符串三等分截取为数组在使用join将其转为格式化的字符串。
代码实现:
// 没有小数时
function ToLocalNum(num) {
let str = num.toString();
let len = str.length;
if (len === 3) {
return str
} else {
let yushu = len % 3
if (yushu == 0) {
return str.match(/\d{3}/g).join(',')
} else {
return str.slice(0, yushu) + ',' + str.slice(yushu, len).match(/\d{3}/g).join(',')
}
}
}
console.log(ToLocalNum(12312345678))
含小数
小数不需要我们进行过多的处理,只需要我们找到相应的小数部分,将其与我们之前的操作拼接起来就可以完成我们想要的效果了。
代码如下:
let format = num => {
let str = num.toString();
let len = str.length;
//小数点后的值
let floatstr = ''
// 判断是否一个整数
let tartgetArr = ''
let donum = num.indexOf('.');
if (donum !== -1) {
tartgetArr = str.slice(0, donum)
floatstr = str.slice(donum, len)
} else {
tartgetArr = str.slice()
}
// 处理整数部分
let tartlen = tartgetArr.length;
if (tartlen == 3) {
return tartgetArr + floatstr
} else {
if (tartlen % 3 === 0) {
return tartgetArr.match(/\d{3}/g).join(',') + floatstr
} else {
return tartgetArr.slice(0,tartlen % 3)+','+tartgetArr.slice(tartlen % 3,tartlen).match(/\d{3}/g).join(',') + floatstr
}
}
}
console.log(format('1231231.123'))