方法1
/**
* 参数说明:
* number:要格式化的数字
* decimals:保留几位小数
* dec_point:小数点符号
* thousands_sep:千分位符号
*/
export const number_format = (number, decimals, dec_point, thousands_sep) => {
number = (number + '').replace(/[^0-9+-Ee.]/g, '')
var n = !isFinite(+number) ? 0 : +number
var prec = !isFinite(+decimals) ? 0 : Math.abs(decimals)
var sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep
var dec = (typeof dec_point === 'undefined') ? '.' : dec_point
var s = ''
var toFixedFix = function(n, prec) {
var k = Math.pow(10, prec)
return '' + Math.ceil(n * k) / k
}
s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.')
var re = /(-?d+)(d{3})/
while (re.test(s[0])) {
s[0] = s[0].replace(re, '$1' + sep + '$2')
}
if ((s[1] || '').length < prec) {
s[1] = s[1] || ''
s[1] += new Array(prec - s[1].length + 1).join('0')
}
return s.join(dec)
}
方法2
/**
* @description 格式化金额
* @param number:要格式化的数字
* @param val:单位w
*/
export const moneyFormat = (number, unit) => {
const unitVal = window.i18n.t('金额单位')
if (number === '' || number === null || number === undefined) {
return ''
}
let val = 0
if (unit === 'rate') {
// 强制保留4位小数
val = +(parseFloat(number)).toFixed(4)
} else {
val = +(parseFloat(number)).toFixed(2)
}
if (unit === 'w' && unitVal === '(万)' || unit === 'w' && unitVal === '(万)') {
return decimalFormat(val, unit, unitVal).replace(/0+$/, '').replace(/.$/, '')
} else {
return decimalFormat(val, unit, unitVal).replace(/0+$/, '').replace(/.$/, '')
}
}