/** * @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"