js数字转中文,带金额单位

以下是将数字转化为中文的JavaScript代码:

function numberToChinese(number) {
  const chineseNum = {
    "0": "零",
    "1": "一",
    "2": "二",
    "3": "三",
    "4": "四",
    "5": "五",
    "6": "六",
    "7": "七",
    "8": "八",
    "9": "九"
  };

  const chineseUnit = ["", "十", "百", "千", "万", "亿"];

  let result = "";

  let numStr = number.toString();

  for (let i = 0; i < numStr.length; i++) {
    let digit = parseInt(numStr.charAt(i));
    let unit = chineseUnit[numStr.length - i - 1];

    if (digit === 0) {
      if (result.charAt(result.length - 1) !== chineseNum["0"]) {
        result += chineseNum[digit];
      }
    } else {
      result += chineseNum[digit] + unit;
    }
  }

  return result;
}

console.log(numberToChinese(12345)); // 一万二千三百四十五
console.log(numberToChinese(100)); // 一百
console.log(numberToChinese(1000)); // 一千
console.log(numberToChinese(10000)); // 一万
console.log(numberToChinese(100000000)); // 一亿

此代码接受一个数字作为参数,并将其转化为中文字符串。例如,numberToChinese(12345)将返回"一万二千三百四十五"。

ai生成看似简单  但console.log(numberToChinese(120505))   一亿二万零五百零五

毕竟ai不动中文的博大精深


    // 定义转换函数
    function transform(tranvalue){
        try{
            var i=1;
            var dw2 = new Array("","万","亿");//大单位
            var dw1 = new Array("拾","佰","仟");//小单位
            var dw = new Array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖");//整数部分用
            //以下是小写转换成大写显示在合计大写的文本框中     
            //分离整数与小数
            var source = splits(tranvalue);
            var num = source[0];
            var dig = source[1];

            //转换整数部分
            var k1=0;//计小单位
            var k2=0;//计大单位
            var sum = 0;
            var str="";
            var len = source[0].length;//整数的长度
            for(i=1;i<=len;i++){
                var n = source[0].charAt(len-i);//取得某个位数上的数字
                var bn = 0;
                if(len-i-1>=0){
                    bn = source[0].charAt(len-i-1);//取得某个位数前一位上的数字
                }
                sum = sum+Number(n);
                if(sum!=0){
                    str = dw[Number(n)].concat(str);//取得该数字对应的大写数字,并插入到str字符串的前面
                    if(n=='0')sum = 0;
                }
                if(len-i-1>=0){//在数字范围内
                    if(k1!=3){//加小单位
                        if(bn!=0){
                            str = dw1[k1].concat(str);
                        }
                        k1++;
                    }else{//不加小单位,加大单位
                        k1=0;
                        var temp = str.charAt(0);
                        if(temp=="万" || temp=="亿")//若大单位前没有数字则舍去大单位
                            str = str.substr( 1, str.length-1);
                        str = dw2[k2].concat(str);
                        sum = 0;
                    }
                }
                if(k1==3)//小单位到千则大单位进一
                { k2++;}
            }

            //转换小数部分
            var strdig="";
            if(dig!=""){
                var n = dig.charAt(0);
                if(n!=0){
                    strdig += dw[Number(n)]+"角";//加数字
                }
                var n = dig.charAt(1);
                if(n!=0){
                    strdig += dw[Number(n)]+"分";//加数字
                }
            }
            str += "元"+strdig;
        }catch(e){
            return "0元";
        }
        return str;
    }

    //拆分整数与小数
    function splits(tranvalue){
        var value = new Array('','');
        temp = tranvalue.split(".");
        for(var i=0;i<temp.length;i++){
            value[i] = temp[i];
        }
        return value;
    }

    // 调用
    var a = '12345678';
    var b = transform(a);
    console.log(b);

// 调用
   var a = '10207.8';
   var b = transform(a);
   console.log(b);
壹万零贰佰零柒元捌角   这就很和谐

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用以下代码将 JS 数字换为金额大写: ```javascript function convertCurrency(money) { // 定义汉字数字 var cnNums = ["零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"]; // 定义汉字单位 var cnIntRadice = ["", "拾", "佰", "仟"]; var cnIntUnits = ["", "万", "亿", "兆"]; var cnDecUnits = ["角", "分", "毫", "厘"]; // 将数字换为字符串,并分割成整数部分和小数部分 var parts = money.toString().split("."); var integer = parts[0]; var decimal = parts[1] ? parts[1].substr(0, 4) : ""; // 将整数部分换为汉字金额大写 var result = ""; var len = integer.length; for (var i = 0; i < len; i++) { var num = parseInt(integer.charAt(i)); var unit = len - i - 1; result += cnNums[num] + cnIntRadice[unit]; if (unit == 0 && num == 1) { result += "元"; } } // 将小数部分换为汉字金额大写 if (decimal != "") { var decLen = decimal.length; for (var i = 0; i < decLen; i++) { var num = parseInt(decimal.charAt(i)); result += cnNums[num] + cnDecUnits[i]; } } // 添加“整”字 if (result == "") { result = "零元整"; } else if (decimal == "") { result += "元整"; } // 添加单位 var unitIndex = 0; while (integer > 0) { var unit = cnIntUnits[unitIndex]; var section = integer % 10000; if (section > 0) { result = cnNums[section] + unit + result; } integer = Math.floor(integer / 10000); unitIndex++; } return result; } console.log(convertCurrency(123456789.1234)); // 壹亿贰仟叁佰肆拾伍万陆仟柒佰捌拾玖元壹角贰分三毫四厘 ``` 注意:以上代码只能将数字换为金额大写,无法将金额换为数字
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值