js实现金额转大写

作者 : 开心源码 本文共967个字,预计阅读时间需要3分钟 发布时间: 2022-05-13 共269人阅读

考虑到整数位最多12位,小数位最多2位的情况

function cashToChinese(cash) {    var digits=['零','壹','贰','叁','肆','伍','陆','柒','捌','玖'];    var largeUnits=['元','万','亿'];    var units=['','拾','佰','仟'];    var fractions=['角','分'];    let cStr='';    cash=cash.toString();    if(cash===''||cash===undefined||cash===null){        return cStr;    }    let preCash=cash.split('.')[0]||'';    let lastCash=cash.split('.')[1]||'00';    if(preCash.length>12||lastCash.length>2){        return cStr;    }    //遍历小数位    for(let i=0;i<fractions.length;i++){        cStr+=(digits[lastCash.charAt(i)]+fractions[i]).replace(/零./,'');    }    cStr=cStr||'整';    //遍历整数位,用str来记录每4位的值    for(let i=preCash.length-1,n=0,str='';i>=0;i--){        let largeUnit='';        str=(digits[preCash[i]]+units[n%4])+str;        //用n计数每隔4位,或者者遍历到头的时候加单位('元','万','亿')        if((n+1)%4===0||i===0){            largeUnit=largeUnits[Math.floor(n/4)];            //考虑替换末位全是0时替换位空 或者者中间连续0时替换为零            str=str.replace(/(零.)*零$/g,'').replace(/(零.)+/g,'零');            str+=largeUnit;            cStr=str+cStr;            str='';        }        n++;    }    //考虑解决('元','万','亿')单位前为10的情况,和整数位为0的情况    return cStr.replace(/壹拾(.){0,1}([元|万|亿])/g,'拾$1$2').replace(/^元/,'');}
说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » js实现金额转大写

发表回复