UNPKG

dxrmb

Version:

[![npm](https://img.shields.io/npm/v/dxrmb)](https://www.npmjs.com/package/dxrmb)

3 lines (2 loc) 2.27 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var n,u=(n=require("decimal.js"))&&"object"==typeof n&&"default"in n?n.default:n,r=["角","分"],t=["零","壹","贰","叁","肆","伍","陆","柒","捌","玖"],e=["","万","亿","兆","京","垓","秭","穰","沟","涧","正","载","极","恒河沙","阿僧祗","那由他","不可思议","无量","大数"],o=new u(10).toPower(64),a=["","拾","佰","仟"];function i(n){return n[n.length-1]}function s(n){for(var u,r=[],t=0;t<n.length;t++){var e=n[t],o=i(r);0===(null==o?void 0:o.num)&&0===e.num||r.push(e)}for(;r.length>0&&0===(u=r,u[0]).num;)r.shift();for(;r.length>0&&0===i(r).num;)r.pop();return r}function l(n){return 0===n.length?t[0]:n.map((function(n){return 0!==n.num?""+n.numHan+n.unit:""+n.numHan})).reverse().join("")}exports.default=function(n){var h=u.sign(n),f=u.abs(n);if(f.cmp(o)>=0)throw new Error("超过最大支持10的64次方");var m=u.floor(f),v=u.sub(f,m),c=function(n){for(var u=function(n,u){for(var r=[],t=0;t<n.length;t+=4)r.push(n.slice(t,t+4));return r}(function(n){for(var u=[],r=n;;){var t=r.mod(10);u.push(t.toNumber());var e=r.divToInt(10);if(e.isZero())break;r=e}return u}(n)),r=[],o=0;o<u.length;o++){for(var h=u[o],f=e[o],m=o,v=[],c=0;c<h.length;c++){var p=h[c];v.push({num:p,numHan:t[p],unit:a[c]})}for(var d=s(v),g=0,k=0;k<v.length;k++)g+=v[k].num*Math.pow(10,k);r.push({localResult:v,unit:f,unitId:m,localStack:d,value:g})}for(var b=[],H=[],j=r.length-1;j>=0;j--){var Z=r[j];if(0!==Z.value){var w=l(Z.localStack),I=i(b);I&&(I.unitId-Z.unitId>1||0===i(Z.localResult).num)&&H.push("零"),H.push(""+w+Z.unit),b.push(Z)}}return{allWords:H,thunkStack:r,isZero:n.isZero()}}(m),p=function(n){for(var u=[],e=!0,o=n,a=0;a<r.length;a++){var i=(o=o.mul(10)).mod(10).floor().toNumber();u.push({num:i,numHan:t[i],unit:r[a],unitId:a}),0!=i&&(e=!1)}return{allWords:u.map((function(n){return 0===n.num?"":""+n.numHan+n.unit})),thunks:u,isZero:e}}(v),d=[];return m.isZero()||d.push(c.allWords.join(""),"元"),0!==p.thunks[0].num&&d.push(p.thunks[0].numHan,"角"),0!==p.thunks[1].num&&d.push(p.thunks[1].numHan,"分"),0===d.length?"零元整":(m.isZero()||0!==p.thunks[1].num||d.push("整"),h<0&&d.unshift("负"),d.join(""))}; //# sourceMappingURL=dxrmb.cjs.production.min.js.map