1.拼接¥符号以及每隔三位以逗号分割
将1000转成 1,000
fixMoney(num) {
if (!num) {
return '0.00';
}
if(isNaN(Number(num))){
return num
}
let number = parseFloat(Number(num).toFixed(3)).toString().replace(/\d{1,3}(?=(\d{3})+(\.\d*)?$)/g,'$&,')
return number
},
2.根据不同传参 显示不同的金额格式化
不传任何参数则格式化为默认样式 -- 示例1
只传某一参数 则另外两个样式不生效不展示 -- 示例2
传三个参数 按照传参样式进行格式化 -- 示例3
/**
* "COMMA" : 数字用逗号分隔
* "PRE_SYMBOL": 用指定符号前缀
* "precision": 精度
*/
numberFormat(source, type) {
if (!source) {
return 0
}
const format = type || {
comma: ',',
pre_symbol: '¥',
suffix_symbol: '',
precision: 2
}
let value = source
if (format.precision) {
value = new Decimal(value).toNumber()
.toFixed(format.precision);
}
if (format.comma) {
value = '' + value
const split = value.split('\.')
const intValue = split[0]
const length = intValue.length
let strTemp = split.length > 1 ? '.' + split[1] : ''
let count = 0;
for (let index = length - 1; index >= 0; index--) {
count++
if (index === 0) {
for (let i = count; i > 0; i--) {
strTemp = intValue[i - 1] + strTemp
}
} else if (count === 3) {
count = 0
strTemp = format.comma + intValue[index] + intValue[index + 1] + intValue[index + 2] + strTemp
}
}
value = strTemp
}
if (format.pre_symbol) {
value = format.pre_symbol + ' ' + value
}
if (format.suffix_symbol) {
value = value + format.suffix_symbol
}
return value
}
示例1:
//默认效果 什么参数都不传
item.amountShow = numberFormat(item.amount);
示例2:
item.goldenbeanQuantityShow = numberFormat(item.goldenbeanQuantity, { comma: ',' });
示例3:
item.goldenbeanQuantityShow = numberFormat(item.goldenbeanQuantity, { comma: '-', precision: 1, pre_symbol: '%%' });