整体思路就是先拿到数据后,先把它当成字符串处理,通过小数点,分开整数和小数部分,然后处理整数部分,如果整数部分小于等于3位,直接用就可以啦,如果大于3位,那么就把这个整数最后3位先存起来且前面加上逗号,然后割掉这个整数的这3位,继续重复这个判断,每次截取的后三位都拼到上一次截取结果的前面,直到整数部分小于等于三位了,就可以和存储的结果拼在一起,再拼上小数部分就可以啦。
希望大家能有更好的方法~
numFormat(num) {
var c = (num.toString().indexOf ('.') !== -1) ? num.toLocaleString() : num.toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,')
return c
}
console.log(this.numFormat(20181029.120))
//格式化钱数,三位加一逗号
function toThousands(number) {
number = number +""
number = number.replace(/\,/g, "")
if(isNaN(number) || number == "")return ""
number = Math.round(number * 100) / 100
if (number <0)
return '-' + outputdollars(Math.floor(Math.abs(number) - 0) + '') + outputcents(Math.abs(number) - 0)
else
return outputdollars(Math.floor(number - 0) + '') + outputcents(number - 0)
}
//格式化金额
function outputdollars(number) {
if (number.length <= 3)
return (number == '' ? '0' : number)
else {
var mod = number.length % 3
var output = (mod == 0 ? '' : (number.substring(0, mod)))
for (i = 0i <Math.floor(number.length / 3)i++) {
if ((mod == 0) &&(i == 0))
output += number.substring(mod + 3 * i, mod + 3 * i + 3)
else
output += ',' + number.substring(mod + 3 * i, mod + 3 * i + 3)
}
return (output)
}
}
function outputcents(amount) {
amount = Math.round(((amount) - Math.floor(amount)) * 100)
return (amount <10 ? '.0' + amount : '.' + amount)
}