UNPKG

@andy922200/number-to-chinese-words

Version:

An npm package for number formatting to Chinese words

46 lines (45 loc) 1.19 kB
const u = function(t) { if (t === 0) return "零"; const c = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九"], s = [ "", "十", "百", "千", "萬", "十", "百", "千", "億", "十", "百", "千", "兆", "十", "百", "千" ], e = t < 0 ? "負" : "", n = Math.abs(t), o = Math.floor(n), r = f(o, c, s), l = i(t, c); return e + r + l; }, f = (t, c, s) => { if (t === 0) return ""; let e = "", n = 0, o = !0; for (; t > 0; ) { const r = t % 10; r === 0 ? o || (o = !0, e = c[r] + e) : (o = !1, e = c[r] + s[n] + e), n++, t = Math.floor(t / 10), n % 4 === 0 && t > 0 && (e = s[n] + e, o = !0); } return e = e.replace(/(億)萬/g, "億").replace(/(兆)億/g, "兆").replace(/(萬萬|億億|兆兆)+/g, (r) => r.slice(0, -1)), e.replace(/^一十/, "十"); }, i = (t, c) => { const s = t.toString(), e = s.indexOf("."); if (e === -1) return ""; let n = Math.floor(t) === 0 || t < 0 && t > -1 ? "零點" : "點"; for (let o = e + 1; o < s.length; o++) { const r = s.charAt(o); n += c[parseInt(r, 10)]; } return n; }; export { u as NumberToChinese };