※前端面试--js编程--数值转换为中文

本文介绍了一个使用JavaScript实现的算法,该算法能够随机生成一个1至100000之间的整数,并将这个整数转换为其对应的中文数字表示形式。通过定义数字和单位的映射,算法能正确地处理从个位到万位的数字转换。

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

随机生成一个 1至100000的整数,并把数值转换为中文数字

/* /* 随机生成一个 1至100000的整数,并把数值转换为中文数字。
例: 99999 = 九万九千九百九十九*/ 
function generateNum(){
    return Math.floor((Math.random()*(100000-1)+1))
}
// console.log(generateNum())
const num2char = ['零','一','二','三','四','五','六','七','八','九']
const key2char = ['','十','百','千','万','十万']
function main(){
    let num = generateNum();
    console.log(num)
    let numArr = []; //存放每一位上策数字,[1,2,3,4,5] = 54321
    // num%10  个位
    while(num){
        let temp = num%10;
        numArr.push(temp);
        num = Math.floor(num/10);
    }
    let resStr = '';
    for(let key in numArr){
        //key  numArr[key]=val
        let val = numArr[key];
        if(key2char[key] != undefined){
            let curr = '';
            if(val == 0){
                if(key == 0){
                    //最后一位为0,可以不读 curr=''
                }else{
                    //中间位为0可以不加单位,但是零要读(重复的0还是要再处理)
                    if(resStr[0] == '零'){
                        //因为数是从小往大的拼接起来的,所以在此次读到零的时候,直接看后面要拼的字符串的开头是不是零
                        //是零,直接跳过这次的加零  curr=''
                    }else{
                        curr  = num2char[val];
                    }  
                }
            }else{
                curr = num2char[val] + key2char[key];
            }
            resStr = curr + resStr;
        }
    }
    //最后得到resStr之后看indexOf('零'),如果尾巴只有零,就裁剪掉  60000这种情况
    if(resStr.indexOf('零') ==resStr.length-1){
        resStr = resStr.slice(0,-1)
    }
    return resStr;
}
console.log(main())
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值