首页 > 其他分享 >金额转换

金额转换

时间:2023-02-21 13:57:15浏览次数:31  
标签:转换 money 金额 decimalNum let chineseStr integerNum const

convertCurrency(money) {
      //汉字的数字
      const cnNums = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];
      //基本单位
      const cnIntRadice = ['', '拾', '佰', '仟'];
      //对应整数部分扩展单位
      const cnIntUnits = ['', '万', '亿', '兆'];
      //对应小数部分单位
      const cnDecUnits = ['角', '分', '毫', '厘'];
      //整数金额时后面跟的字符
      const cnInteger = '整';
      //整型完以后的单位
      const cnIntLast = '元';
      //最大处理的数字
      let maxNum = 999999999999999.9999;
      //金额整数部分
      let integerNum;
      //金额小数部分
      let decimalNum;
      //输出的中文金额字符串
      let chineseStr = '';
      //分离金额后用的数组,预定义
      let parts;
      if (money === '') {
        return '';
      }
      money = parseFloat(money);
      if (money >= maxNum) {
        //超出最大处理数字
        return '';
      }
      if (money === 0) {
        chineseStr = cnNums[0] + cnIntLast + cnInteger;
        return chineseStr;
      }
      //转换为字符串
      money = money.toString();
      if (money.indexOf('.') === -1) {
        integerNum = money;
        decimalNum = '';
      } else {
        parts = money.split('.');
        integerNum = parts[0];
        decimalNum = parts[1].substr(0, 4);
      }
      //获取整型部分转换
      if (parseInt(integerNum, 10) > 0) {
        var zeroCount = 0;
        var IntLen = integerNum.length;
        for (let i = 0; i < IntLen; i++) {
          let n = integerNum.substr(i, 1);
          let p = IntLen - i - 1;
          let q = p / 4;
          let m = p % 4;
          if (n == '0') {
            zeroCount++;
          } else {
            if (zeroCount > 0) {
              chineseStr += cnNums[0];
            }
            //归零
            zeroCount = 0;
            chineseStr += cnNums[parseInt(n)] + cnIntRadice[m];
          }
          if (m == 0 && zeroCount < 4) {
            chineseStr += cnIntUnits[q];
          }
        }
        chineseStr += cnIntLast;
      }
      //小数部分
      if (decimalNum !== '') {
        let decLen = decimalNum.length;
        for (let i = 0; i < decLen; i++) {
          let n = decimalNum.substr(i, 1);
          if (n !== '0') {
            chineseStr += cnNums[Number(n)] + cnDecUnits[i];
          }
        }
      }
      if (chineseStr === '') {
        chineseStr += cnNums[0] + cnIntLast + cnInteger;
      } else if (decimalNum === '') {
        chineseStr += cnInteger;
      }
      return chineseStr;
    }

标签:转换,money,金额,decimalNum,let,chineseStr,integerNum,const
From: https://www.cnblogs.com/gzeal/p/17140680.html

相关文章

  • 类型转换
      1.不能对布尔值转换2.不能把对象类型转换为不相干的类型3.在高容量转换到低容量的时候,强制转换4.转换的时候存在内存溢出,或者精度问题 ......
  • python、js实现WGS84、高德(火星)、百度坐标转换
    在日常工作学习中常会涉及到WGS84、高德(火星/谷歌)、百度三种空间坐标系的坐标转换,本文将通过python、js两种语言实现坐标系的转换。坐标系说明:wgs84:为一种大地......
  • 5.4_C语言类型转换
    @目录一、案例一二、案例二三、案例三四、总结这个小结我们要探讨一个相对来说简单的问题,就是c语言里边的那些定点整数是如何进行强制类型转换的。一、案例一来看这样......
  • 进制转换
    1.1计算机硬件基本认知cpu:中央处理器.相当于人的大脑.运算中心,控制中心.内存:临时存储数据.优点:读取速度快。缺点:容量小,造价高,断电即消失.硬盘:长......
  • Date和LocalDateTime相互转换
    Datein=newDate();LocalDateTimeldt=LocalDateTime.ofInstant(in.toInstant(),ZoneId.systemDefault());Dateout=Date.from(ldt.atZone(ZoneId.systemDefaul......
  • babel对ES6的模块化代码转换
    1安装工具babel-clibabel-preset-envbrowserify(webpack).babelrc配置{presets":["babel-preset-env"]2npxbabelsrc/js-ddist/js3打包npxbrowserifydis......
  • CRON表达式转换成中文
    目录1,cron表达式生成器2,cron表达式一,结构二、各字段的含义三、常用表达式例子3,转换成中文:1,CronExpParserUtil2,WeekEnum3,测试:4,测试输出:总结: 1,cron表达式生......
  • STL进制转换
    输入一个十进制数N,将它转换成R进制数输出。Input输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(2<=R<=16,R<>10)。Output为每个测试实例输出转换后的......
  • FFmpeg转换直播流格式
    mp4转rtspffmpeg-re-i1671680590843.mp4-vcodeccopy-acodeccopy-frtsprtsp://localhost:8554/live.sdp mp4转hlsffmpeg-re-iD:\下载[www.domp4.cc]兔子......
  • file的各种转换
    1.将bloburl转换为file格式letdata={name: "新年致辞.png",status: "success",uid: 1664334311149,url: "blob:http://localhost:9528/d66ad67a......