2019-10-24 seo達人
普通數(shù)字轉(zhuǎn)會計金額格式(保留兩位小數(shù))
我們可以用數(shù)字的toLocaleString()方法將普通數(shù)字轉(zhuǎn)為會計金額格式,但是這種方式無法保留兩位小數(shù)(四舍五入),如果是整數(shù)或者小數(shù)長度只有一位的時候無法自動補0
例如:
思路:
利用toLocaleString()以及toFixed()先對數(shù)字進行一個轉(zhuǎn)換得到最多保留了2位小數(shù)的金額,然后判斷數(shù)字是為整數(shù)還是帶有小數(shù),如果帶有小數(shù)則進行切割,判斷小數(shù)長度為1時自動補0
// 普通數(shù)字轉(zhuǎn)會計金額格式 第一種
function toThousandsFormates(num) {
// 判斷傳進來的數(shù)字是否為非空數(shù)字
if (!isNaN(parseFloat(num))) {
var reg = /./g
var newNum = Number(Number(num).toFixed(2)).toLocaleString()
// 判斷轉(zhuǎn)換后的數(shù)字是否帶有小數(shù)
if (reg.test(newNum)) {
var numArr = newNum.split('.')
// 判斷小數(shù)點后數(shù)字長度為1,則自動補0
numArr[1] = numArr[1].length === 1 ? numArr[1] + '0' : numArr[1]
return numArr.join('.')
} else {
// 整數(shù)直接在后面補上0.00
return newNum + '.00'
}
} else {
return ''
}
}
console.log(toThousandsFormates('0')); // 0.00
console.log(toThousandsFormates('')); // ''
console.log(toThousandsFormates(966)); // 966.00
console.log(toThousandsFormates(966.3)); // 966.30
console.log(toThousandsFormates(9669228.55)); // 9,669,228.55
console.log(toThousandsFormates(96566.56954)); // 96,566.57
經(jīng)過查閱資料后,發(fā)現(xiàn)toLocaleString()它里面自帶屬性可以檢查到最少保留了幾位小數(shù),不夠自動補0,這樣我們上面的代碼其實可以更加簡單,如下:
// 普通數(shù)字轉(zhuǎn)會計金額格式 第二種
function toThousandsFormates2(num) {
// 判斷傳進來的數(shù)字是否為非空數(shù)字
if (!isNaN(parseFloat(num))) {
var newNum = Number(Number(num).toFixed(2)).toLocaleString('zh', { minimumFractionDigits: 2 })
return newNum
} else {
return ''
}
}
console.log(toThousandsFormates2('0')); // 0.00
console.log(toThousandsFormates2('')); // ''
console.log(toThousandsFormates2(966)); // 966.00
console.log(toThousandsFormates2(966.3)); // 966.30
console.log(toThousandsFormates2(9669228.55)); // 9,669,228.55
console.log(toThousandsFormates2(96566.56954)); // 96,566.57
// 結(jié)果一模一樣
會計金額格式轉(zhuǎn)普通數(shù)字(利用正則)
// 會計金額格式轉(zhuǎn)為普通數(shù)字
function rMoney(num) {
return parseFloat(num.replace(/[^\d\.-]/g, ''))
}
console.log(rMoney('96,566.57')); // 96566.57
console.log(rMoney('966.30')); // 966.3
console.log(rMoney('9,669,228.55')); // 9669228.55
藍藍設(shè)計( www.yvirxh.cn )是一家專注而深入的界面設(shè)計公司,為期望卓越的國內(nèi)外企業(yè)提供卓越的UI界面設(shè)計、BS界面設(shè)計 、 cs界面設(shè)計 、 ipad界面設(shè)計 、 包裝設(shè)計 、 圖標定制 、 用戶體驗 、交互設(shè)計、 網(wǎng)站建設(shè) 、平面設(shè)計服務(wù)。
藍藍設(shè)計的小編 http://www.yvirxh.cn