zoukankan      html  css  js  c++  java
  • JavaScript 整数转大写中文

    function toChinese(money){
        var chNum=['','','','','','','','','',''];
        var maxnum=999999999999.99;
        var num=0;
        var chstr = '', //返回的大写字符串
            moneyint=parseInt(money)+'',//整数位
            moneydec= money.toString().split('.')[1], //取小数位
            len = moneyint.length;
                
        if(+money==0)     {return '零元整';}
        else if(money <= maxnum) 
        {    
            //处理整数
            if(moneyint >0) chstr +='';//整数大于0,先插入元
            
            for(var i = 0;i < len;i++){
                if(i == 4 && +moneyint.slice(-8,-4)>0){//万-亿之间有数字,则插入万;否则不插入
                    chstr = ''+chstr;
                }
                else if(i ==  8){//插入亿
                    chstr = '亿 '+chstr;
                }
                
                if(+moneyint[len-i-1]>0){
                    num = i%4; //每四位-个十百千
                    switch(num){
                        case 0:chstr=chNum[moneyint[len-i-1]]+chstr;break; //
                        case 1:chstr=chNum[moneyint[len-i-1]]+''+chstr;break;//
                        case 2:chstr=chNum[moneyint[len-i-1]]+''+chstr;break;//
                        case 3:chstr=chNum[moneyint[len-i-1]]+''+chstr;break;//
                    }
                }else if(i%4>0 && moneyint[len-i]>0) //非个位等于0,前一位不等于0则插入零
                {
                    chstr = '' + chstr;
                }
                
            }
            
            //处理2位小数
            if(+moneydec){//undefined 或00为false
                moneydec=moneydec.slice(0,2);
                var jiao = moneydec[0];
                var fen = moneydec[1];
                if(+jiao || +fen) {
                    chstr += (+jiao? chNum[jiao]+'' : '');
                    chstr += (+fen ? chNum[fen]+'' : '' );
                }
            }
            else{
                chstr += '';
            }
            
        } 
        else 
        {
           chstr = '超出最大处理数字 或 参数为空';
        }
       return chstr;    
    }
    
    var x=1112;
    console.log(toChinese(x));

    输出

    '壹仟壹佰壹拾贰元整'

    参考:

    https://www.cnblogs.com/dinghanhua/p/9700767.html

  • 相关阅读:
    [CQOI2016]手机号码
    花神的数论题
    [AHOI2009]同类分布
    lightoj 1007
    PAT (Advanced Level) 1007. Maximum Subsequence Sum (25) 经典题
    PAT (Top Level)1002. Business DP/背包
    PAT (Advanced level) 1003. Emergency (25) Dijkstra
    HDU 1874 SPFA/Dijkstra/Floyd
    POJ 2823 Sliding Window ST RMQ
    HUST 1103 校赛 邻接表-拓扑排序
  • 原文地址:https://www.cnblogs.com/sea-stream/p/11392131.html
Copyright © 2011-2022 走看看