数字格式化
Numeral.js
用于格式化和操作数字的 JavaScript 库。数字可以被格式化为货币,百分比,时间,几个小数位数,千分位等等。
但是现在已经不维护了,处理数据有限制,只能处理 0.000001 - 999999999999999 范围内的数字,可以作一些简单的二次封装处理
function numFormat(num) {
return num.toString().indexOf('.') !== -1
? num.toLocaleString()
: num.toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,')
}
function addMinis(num, bollean = false) {
return bollean ? `-${num}` : num
}
export function numberFormat(num) {
if (isNaN(num)) {
return 'NaN'
}
const isLessZero = Number(num) < 0 // 是否为负数
const absNum = Math.abs(num) // 取绝对值
if (absNum === 0) {
return 0
}
const regexp = /(?:\.0*|(\.\d+?)0+)$/ // 去除小数点后多余的0
if (absNum > 999999999999999) {
// 数据过大的问题
return addMinis(numFormat(absNum), isLessZero)
}
// numeral(0.000001).format('0') => NAN
return absNum > 0.000001
? addMinis(numeral(absNum).format('0, 0.[000000000000000000]'), isLessZero)
: addMinis(absNum.replace(regexp, '$1'), isLessZero)
// 0,0.[000000000000000000] 默认千分位',' 分割,保留18位小数,并且去除无效的0
}
accounting.js
一个轻量级的 JavaScript 库,用于格式化数字,金额和货币等。
暂未使用,功能好像没有
Numeral.js
丰富