js将阿拉伯数字转换成汉字大写

摘要:
'Nine')//基本单位varcnIntRadius=newArray(“”,//整数完成后的单位varcnIntLast='circle';//输出的中文金额字符串varchineseStr='';if(money==''){return'';=maxNum){//超过最大处理数return'';if(money.indexOf('.')==-1){integerNum=money;
适用场景:票据,结算凭证等。
将任意数字的金额,转换成汉字大写的形式。
例如:1234.50 -> 壹仟贰佰叁拾肆圆伍角。
壹、贰、叁、肆

直接贴代码,如下:

//阿拉伯数字转换成大写汉字
function numberParseChina(money){
//汉字的数字
  var cnNums = new Array('零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖');
  //基本单位
  var cnIntRadice = new Array('', '拾', '佰', '仟');
  //对应整数部分扩展单位
  var cnIntUnits = new Array('', '万', '亿', '兆');
  //对应小数部分单位
  var cnDecUnits = new Array('角', '分', '毫', '厘');
  //整数金额时后面跟的字符
  var cnInteger = '整';
  //整型完以后的单位
  var cnIntLast = '圆';
  //最大处理的数字
  var maxNum = 999999999999999.9999;
  //金额整数部分
  var integerNum;
  //金额小数部分
  var decimalNum;
  //输出的中文金额字符串
  var chineseStr = '';
  //分离金额后用的数组,预定义
  var 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 (var i = 0; i < IntLen; i++) {
      var n = integerNum.substr(i, 1);
      var p = IntLen - i - 1;
      var q = p / 4;
      var 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 != '') {
    var decLen = decimalNum.length;
    for (var i = 0; i < decLen; i++) {
      var 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;
}

 在小程序中使用,要将上面的代码略改,小程序不支持字符串方法substr()方法,但支持substring()方法

(排查了的心态快炸了!)Σ( ° △ °|||)︴,还有个地方Number()方法也报错,改成parseInt()就好了。具体看代码,我把这代码放到了微信的wxs文件里了。

tools.wxs文件

js将阿拉伯数字转换成汉字大写第1张js将阿拉伯数字转换成汉字大写第2张
var numberParseChina = function (money){
    console.log(money, '执行了吗');

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

    return chineseStr;
}

module.exports = {
    numberParseChina: numberParseChina
}
View Code

转载:https://blog.csdn.net/guoyangyang123456/article/details/84525865

免责声明:文章转载自《js将阿拉伯数字转换成汉字大写》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇time,gettimeofday,clock_gettimelinux下shell编程示例-获取进程id下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Halcon 识别车牌学习笔记

有一张车牌照片如下: read_image (Image, 'C:/Users/LiZhiqiang/Desktop/车牌2.jpg')//读取照片 rgb1_to_gray (Image, GrayImage)//转化成灰度图像 threshold (GrayImage, Regions, 21, 163)//设定阈值 connection (Reg...

async和await的小结

async 配合 await 使用 1、未使用 async 和 await  <el-button @click="getData">Promise</el-button> import getWeater from '@/app/login.js' methods: { getData() { // 未使用async...

python爬虫(二十) select方法

有时候需要css选择器 1、通过标签名查找: <style type="text/css"> p{ background-color:pink; } </style> <body> <div class="box"> <p&...

mysql安装和遇到的问题处理

遇到需要在新系统上安装MySQL的事情,简单记录一下过程。 声明:最好的文档是官方文档,我也是看的官方文档,只是中间遇到点问题,记录一下出现的问题和处理方式。贴一些官方文档地址。 用tar包的安装方式:https://dev.mysql.com/doc/refman/5.7/en/binary-installation.html 用yum源等其他安装方式:...

Sublime text 3 汉化教程

首先,需要安装Package Control 启动并进入sublime主界面,打开Sublime Text的控制台(快捷键 ctrl + ~) 然后我们到Package Control官方网站,复制sublime text 3的脚本文件 网址:https://packagecontrol.io/installation 脚本文件如下: import u...

Avue-curd通用模板(二)

目录 Avue-curd通用模板 1、增加路由菜单 2、通用模板 3、踩坑 4、表格空数据样式 Avue-curd通用模板 上一篇已经把所有使用Avue的准备工作做好了,下面就通过一个简单的例子来体验一下avue能带给我们的便利。 1、增加路由菜单 在 src/router/index.js,增加一个路由(由于这只是用来测试学习的,所以放在了...