JAVASCRIPT-貨幣千分位,並且保留兩位小數
阿新 • • 發佈:2020-07-13
/** * @param {*} money[輸入的money] * @param {string} [貨幣符號,sysmbol='¥'] * @param {number} [小數點位數,places=2] * @returns undefined */ function dealMoney(money, sysmbol = '¥', places = 2) { const zero = `${sysmbol}0.00`; if (isNaN(money) || money === '') return zero; if(money && money != null){ money = `${money}`; let left=money.split('.')[0]; // 小數點左邊部分 let right=money.split('.')[1]; // 小數點右邊 // 保留places位小數點,當長度沒有到places時,用0補足。 right = right ? (right.length >= places ? '.' + right.substr(0, places) : '.' + right + '0'.repeat(places - right.length)) : ('.' + '0'.repeat(places));var temp = left.split('').reverse().join('').match(/(\d{1,3})/g); // 分割反向轉為字串然後最多3個,最少1個,將匹配的值放進陣列返回 return (Number(money) < 0 ? '-' : '') + sysmbol + temp.join(',').split('').reverse().join('') + right; // 補齊正負號和貨幣符號,陣列轉為字串,通過逗號分隔,再分割(包含逗號也分割)反向轉為字串變回原來的順序 } else if (money === 0) {return zero; } else { return zero; } }
呼叫: dealMoney(1); // "¥1.00" dealMoney(89783, '$', 3); // "$89,783.000" dealMoney('guo', '$', 3); // "$0.00"