export const Fn = {
deleteDots(arr){
let reDelete = false
if(arr[0] == 0 && arr.length>1 && arr[1]!= '.'){
arr.splice(0,1)
reDelete = true
}
if(arr[0] == '.'){
arr.unshift('0')
}
if(arr[arr.length - 1] == '.'){
arr.splice(arr.length - 1,1)
reDelete = true
}
if(reDelete && arr.length>0){
Fn.deleteDots(arr)
}else{
return arr
}
},
money(number,precision) {//金融格式的数字
number = number.toString()
if(number.includes(',')){
number = number.replaceAll(',','')
}
let numberArr = [...number]
let dotNumber = 0
numberArr.map(item=>{
if(item == '.'){
dotNumber++
}
})
if(dotNumber>1){
return 0
}else{
if(Boolean(precision)){
number = (Number(number).toFixed(Number(precision))).toString()
numberArr = [...number]
}
if(numberArr.length>0){
numberArr = Fn.deleteDots(numberArr)
if(numberArr.length>0){
number = numberArr.join('')
}else{
number = '0'
}
let inte, length
if (number.includes('.')) {
inte = number.split('.')[0]
} else {
inte = number
}
let chars = [...inte]
length = chars.length
let more = length % 3
if (more == 0) {
more = 3
}
let splitIntes = []
for (let i = more; i <= length; i = i + 3) {
if (i < 3) {
splitIntes.push(inte.substring(0, more))
} else {
splitIntes.push(inte.substring(i - 3, i))
}
}
let str = splitIntes.join(',')
if (number.includes('.')) {
str = str + '.' + number.split('.')[1]
}
return str
}else{
return 0
}
}
},
```}
上面的方法写在util.js里面,使用的时候页面import引入util,
import {Fn as util} from '@/utils/util'
然后number = util.money(number,precision)
注意:1,number中可以有逗号(多少个,在什么地方都无所谓,工具直接转换了),只能有一个小数点(否则返回0)
2,precision代表保留n位小数,不填写按照原先number保留小数
数字转金融格式并且保留n位小数的工具方法
于 2023-03-24 14:19:07 首次发布