@andy922200/number-to-chinese-words
Version:
An npm package for number formatting to Chinese words
46 lines (45 loc) • 1.19 kB
JavaScript
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
};