UNPKG

@andy922200/number-to-chinese-words

Version:

An npm package for number formatting to Chinese words

2 lines (1 loc) 909 B
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=function(t){if(t===0)return"零";const l=["零","一","二","三","四","五","六","七","八","九"],s=["","十","百","千","萬","十","百","千","億","十","百","千","兆","十","百","千"],e=t<0?"負":"",n=Math.abs(t),o=Math.floor(n),r=f(o,l,s),c=u(t,l);return e+r+c},f=(t,l,s)=>{if(t===0)return"";let e="",n=0,o=!0;for(;t>0;){const r=t%10;r===0?o||(o=!0,e=l[r]+e):(o=!1,e=l[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(/^一十/,"十")},u=(t,l)=>{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+=l[parseInt(r,10)]}return n};exports.NumberToChinese=i;