UNPKG

chinesmoney

Version:

金额转大写

48 lines (43 loc) 1.43 kB
/** * 数字金额转大写 * @param {*} n 金额,小数保留两位 数字 或者 字符串 * @returns 大写金额 例如:2.5, 返回:贰元伍角 */ const chinesMoney = (n) => { if (n == 0) { return '零' } if (!/^(\+|-)?(0|[1-9]\d*)(\.\d+)?$/.test(n)) { return "数据非法" } let unit = "仟佰拾亿仟佰拾万仟佰拾元角分" let str = '' n += '00' let a = parseFloat(n); if (a < 0) { n = n.substr(1) } let p = n.indexOf('.') if (p >= 0) { n = n.substring(0, p) + n.substr(p + 1, 2); } unit = unit.substring(unit.length - n.length) for (let i = 0; i < n.length; i++) { str += '零壹贰叁肆伍陆柒捌玖'.charAt(n.charAt(i)) + unit.charAt(i) } if (a > 0) { return str.replace(/零(仟|佰|拾|角)/g, "零") .replace(/(零)+/g, "零") .replace(/零(万|亿|元)/g, "$1") .replace(/(亿)万|壹(拾)/g, "$1$2") .replace(/^元零?|零分/g, "") .replace(/元$/g, "元整") } return "负" + str.replace(/零(仟|佰|拾|角)/g, "零") .replace(/(零)+/g, "零") .replace(/零(万|亿|元)/g, "$1") .replace(/(亿)万|壹(拾)/g, "$1$2") .replace(/^元零?|零分/g, "") .replace(/元$/g, "元整") } module.exports = chinesMoney