数字千分位格式化问题

  • Post author:
  • Post category:其他


当系统中涉及到很多金额并且数额较大时需要对数字进行千分位格式化,提升数字的可阅读性

具体方式,可以封装一个方法

export function formatCurrency(num) {

if (num || num == 0) {

// 将num中的$,去掉,将num变成一个纯粹的数据格式字符串

num = num.toString().replace(/\$|\,/g, ”)

// 如果num不是数字,则将num置0,并返回

if (num === ” || isNaN(num)) {

return ‘Not a Number ! ‘

}

// 如果num是负数,则获取她的符号

var sign = ”

if (num.indexOf(‘-‘) !== -1) {

sign = ‘-‘

num = num.substr(1)

}

// 如果存在小数点,则获取数字的小数部分

var cents = num.indexOf(‘.’) > 0 ? num.substr(num.indexOf(‘.’)) : ”

cents = cents.length > 1 ? cents : ” // 注意:这里如果是使用change方法不断的调用,小数是输入不了的

// 获取数字的整数数部分

num = num.indexOf(‘.’) > 0 ? num.substring(0, (num.indexOf(‘.’))) : num

// 如果没有小数点,整数部分不能以0开头

if (cents === ”) {

if (num.length > 1 && num.substr(0, 1) === ‘0’) {

return ‘Not a Number ! ‘

}

} else {

if (num.length > 1 && num.substr(0, 1) === ‘0’) {

return ‘Not a Number ! ‘

}

}

for (var i = 0; i < Math.floor((num.length – (1 + i)) / 3); i++) {

num = num.substring(0, num.length – (4 * i + 3)) + ‘,’ + num.substring(num.length – (4 * i + 3))

}

// 将数据(符号、整数部分、小数部分)整体组合返回

return sign + num + cents

}

}



版权声明:本文为helenwei2017原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。