Javascript 构造一个1亿以下的数字转中文的货币表示转换器

博客主要围绕实现一亿以内大小写转换器展开,这属于信息技术领域的编程练习,可能涉及到具体的代码实现来完成大小写转换功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//练习:实现一亿以内大小写的转换器

var CHINACHAR = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];
 function transfer(x){
    var str = '';
    if(typeof x != 'number' || isNaN(x) || x > 100000000)return '';

    var iWan = Math.floor(x / 10000);
    var iSTY = Math.floor(x - iWan * 10000);
    var iJF =  Math.round(x * 100 ) % 100 ;
    var iJ = Math.floor(iJF / 10);
    var iF = Math.floor(iJF % 10);

    if(iWan != 0){//考虑万和千之间加零得情况
        str +=  transferS(iWan) + '万' ;
         if(iWan % 10 == 0 || Math.floor(iSTY / 1000) == 0){//万位和千位有一个为零
         	if(iSTY != 0){
            str += '零' ;         
            }
        }
    }

   
    if(iSTY != 0){
        str += transferS(iSTY);
    }    
    
    //考虑小数
    if(str != ''){//小数前面不为空
        str += '元';
        if(iJ != 0 || iF != 0){
            if(iJ != 0){
                str +=  CHINACHAR[iJ] + '角';
            }
            if(iF != 0){
                str +=  CHINACHAR[iF] + '分';
            }
        }
    }else{//小数前面为空
        if(iJ != 0 || iF != 0){
            if(iJ != 0){
                str +=  CHINACHAR[iJ] + '角';
            }
            if(iF != 0){
                str +=  CHINACHAR[iF] + '分';
            }
        }else{//没有小数
            str += '零元';
        }
    }
    return str;
}

function transferS(x){
    var str = '';
    var iS = Math.floor(x / 1000) ;
    var iH = Math.floor(x / 100 % 10 );
    var iT = Math.floor(x / 10 % 10);
    var iY = Math.floor(x % 10);
    if(typeof x != 'number' || isNaN(x) || x > 10000 ){
        return str;
    }
    if(iS != 0){//千位不为零
        str += CHINACHAR[iS] + '仟';
        if(iH != 0){//千位不为零,百位不为零
            str += CHINACHAR[iH] + '佰'; 
            if(iT != 0){////千位不为零,百位不为零,十位不为0
                str += CHINACHAR[iT] + '拾';
                if(iY != 0){//千位不为零,百位不为零,十位不为0,各位不为零
                    str += CHINACHAR[iY];//1234
                }
                ////千位不为零,百位不为零,十位不为0,各位为零
                
            }else{////千位不为零,百位不为零,十位为0 //120x 1200 1204
                if(iY != 0){//千位不为零,百位不为零,十位为0,各位不为零
                    str += '零' + CHINACHAR[iY];//1204
                }
                //千位不为零,百位不为零,十位为0,各位为零,什么都不用作 1200  
            }

        }else{//千位不为零,百位为零 1000 1030  1004 1034
            if(iT != 0){//千位不为零,百位为零,十位不为0;103x
                str += '零' + CHINACHAR[iT] + '拾';
                if(iY != 0){//千位不为零,百位为零,十位不为0,各位不为零 1034
                    str += CHINACHAR[iY];
                }
                //千位不为零,百位为零,十位不为0,各位为零,什么都不用作
            }else{//千位不为零,百位为零,十位为0 100x
                if(iY != 0){//千位不为零,百位为零,十位为0,各位不为零 1004
                    str += '零' + CHINACHAR[iY]; 
                }
            }
        }

    }else{//千位为零
        if(iH != 0){//千位为零,百位不为零
            str += CHINACHAR[iH] + '佰'; 
            if(iT != 0){////千位为零,百位不为零,十位不为0
                str += CHINACHAR[iT] + '拾';
                if(iY != 0){//千位为零,百位不为零,十位不为0,各位不为零
                    str += CHINACHAR[iY];//1234
                }
                ////千位为零,百位不为零,十位不为0,各位为零
                
            }else{////千位为零,百位不为零,十位为0
                if(iY != 0){//千位不为零,百位为零,十位为0,各位不为零
                    str += '零' + CHINACHAR[iY];//1204
                }
                //千位为零,百位不为零,十位为0,各位为零,什么都不用作 1200  
            }

        }else{//千位为零,百位为零 0000 3x  
            if(iT != 0){//千位不为零,百位为零,十位不为0;103x
                str += CHINACHAR[iT] + '拾';
                if(iY != 0){//千位不为零,百位为零,十位不为0,各位不为零 1034
                    str += CHINACHAR[iY];
                }
                //千位为零,百位为零,十位不为0,各位为零,什么都不用作
            }else{//十位为0  x
                if(iY != 0){//千位为零,百位为零,十位为0,各位不为零 1004
                    str += CHINACHAR[iY]; 
                }else{
                    str += '零';
                }
            }
        }
    }
    return str;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值