js实现人民币大写金额形式转换


Posted in Javascript onApril 27, 2016

本文实例为大家分享了js实现金额转大写的相关代码,供大家参考,具体内容如下

function convertCurrency(num) { //转成人民币大写金额形式
  var str1 = '零壹贰叁肆伍陆柒捌玖'; //0-9所对应的汉字
  var str2 = '万仟佰拾亿仟佰拾万仟佰拾元角分'; //数字位所对应的汉字
  var str3; //从原num值中取出的值
  var str4; //数字的字符串形式
  var str5 = ''; //人民币大写金额形式
  var i; //循环变量
  var j; //num的值乘以100的字符串长度
  var ch1; //数字的汉语读法
  var ch2; //数字位的汉字读法
  var nzero = 0; //用来计算连续的零值是几个
  num = Math.abs(num).toFixed(2); //将num取绝对值并四舍五入取2位小数
  str4 = (num * 100).toFixed(0).toString(); //将num乘100并转换成字符串形式
  j = str4.length; //找出最高位
  if (j > 15) {
    return '溢出';
  }
  str2 = str2.substr(15 - j); //取出对应位数的str2的值。如:200.55,j为5所以str2=佰拾元角分
  //循环取出每一位需要转换的值
  for (i = 0; i str3 = str4.substr(i, 1); //取出需转换的某一位的值
    if (i != (j - 3) && i != (j - 7) && i != (j - 11) && i != (j - 15)) { //当所取位数不为元、万、亿、万亿上的数字时
      if (str3 == '0') {
        ch1 = '';
        ch2 = '';
        nzero = nzero + 1;
      } else {
        if (str3 != '0' && nzero != 0) {
          ch1 = '零' + str1.substr(str3 * 1, 1);
          ch2 = str2.substr(i, 1);
          nzero = 0;
        } else {
          ch1 = str1.substr(str3 * 1, 1);
          ch2 = str2.substr(i, 1);
          nzero = 0;
        }
      }
    } else { //该位是万亿,亿,万,元位等关键位
      if (str3 != '0' && nzero != 0) {
        ch1 = "零" + str1.substr(str3 * 1, 1);
        ch2 = str2.substr(i, 1);
        nzero = 0;
      } else {
        if (str3 != '0' && nzero == 0) {
          ch1 = str1.substr(str3 * 1, 1);
          ch2 = str2.substr(i, 1);
          nzero = 0;
        } else {
          if (str3 == '0' && nzero >= 3) {
            ch1 = '';
            ch2 = '';
            nzero = nzero + 1;
          } else {
            if (j >= 11) {
              ch1 = '';
              nzero = nzero + 1;
            } else {
              ch1 = '';
              ch2 = str2.substr(i, 1);
              nzero = nzero + 1;
            }
          }
        }
      }
    } if (i == (j - 11) || i == (j - 3)) { //如果该位是亿位或元位,则必须写上
      ch2 = str2.substr(i, 1);
    }
    str5 = str5 + ch1 + ch2;
    if (i == j - 1 && str3 == '0') { //最后一位(分)为0时,加上“整”
      str5 = str5 + '整';
    }
  }
  if (num == 0) {
    str5 = '零元整';
  }
  if (str5.indexOf("分") == -1) {
    if (str5.indexOf("拾元零") > 0) {
      str5 = str5.replace("拾元零", "拾元");
    };
  }
  return str5;
}
 
function doConvert(m, n) {
  Ext.getCmp(m).on('change', function() {
    var objm = Ext.getCmp(m);
    var objn = Ext.getCmp(n);
    if (!(/^\d+(\.\d+)?$/.test(objm.getValue()))) {
      objn.setValue("");
    } else {
      var money = convertCurrency(objm.getValue());
      if (objm.getValue() == "") {
        objn.setValue("");
      } else {
        objn.setValue(money);
      }
    }
    var money = convertCurrency(objm.getValue());
    if (money.indexOf("拾元零") > 0) {
      if (money.indexOf("分") == -1) {
        objn.setValue(money.replace("拾元零", "拾元"));
      }
    };
  });
}

以上就是本文的全部内容,希望对大家学习javascript程序设计有所帮助。

Javascript 相关文章推荐
js 页面传参数时 参数值含特殊字符的问题
Dec 13 Javascript
入门基础学习 ExtJS笔记(一)
Nov 11 Javascript
JS 获取滚动条高度示例代码
Oct 24 Javascript
在firefox和Chrome下关闭浏览器窗口无效的解决方法
Jan 16 Javascript
JS父页面与子页面相互传值方法
Mar 05 Javascript
javascript中对Date类型的常用操作小结
May 19 Javascript
JS实现的多张图片轮流播放幻灯片效果
Jul 22 Javascript
layer弹出层中H5播放器全屏出错的解决方法
Feb 21 Javascript
详解从angular-cli:1.0.0-beta.28.3升级到@angular/cli:1.0.0
May 22 Javascript
浅谈Node模块系统及其模式
Nov 17 Javascript
vue项目中使用scss的方法步骤
May 16 Javascript
vue使用video插件vue-video-player详解
Oct 23 Javascript
javascript实现不同颜色Tab标签切换效果
Apr 27 #Javascript
JS代码随机生成姓名、手机号、身份证号、银行卡号
Apr 27 #Javascript
JavaScript弹窗基础篇
Apr 27 #Javascript
jQuery绑定事件on()与弹窗的简要概述
Apr 27 #Javascript
jQuery.form插件的使用及跨域异步上传文件
Apr 27 #Javascript
js实现纯前端的图片预览
Apr 27 #Javascript
简介BootStrap model弹出框的使用
Apr 27 #Javascript
You might like
用PHP的ob_start();控制您的浏览器cache!
2006/11/25 PHP
PHP中unset,array_splice删除数组中元素的区别
2014/07/28 PHP
php使用Imagick生成图片的方法
2015/07/31 PHP
深入理解PHP 数组之count 函数
2016/06/13 PHP
php中引用&的用法分析【变量引用,函数引用,对象引用】
2016/12/12 PHP
javascript 兼容所有浏览器的DOM扩展功能
2012/08/01 Javascript
JS中引用百度地图并将百度地图的logo和信息去掉
2013/09/29 Javascript
jqGrid随窗口大小变化自适应大小的示例代码
2013/12/28 Javascript
浅析JavaScript中浏览器的兼容问题
2016/04/19 Javascript
jQuery实现的图片轮播效果完整示例
2016/09/12 Javascript
js日期相关函数dateAdd,dateDiff,dateFormat等介绍
2016/09/24 Javascript
JQuery PHP图片在线裁剪实例
2020/07/27 Javascript
Android中Okhttp3实现上传多张图片同时传递参数
2017/02/18 Javascript
JS实现点击链接切换显示隐藏内容的方法
2017/10/19 Javascript
jQuery发请求传输中文参数乱码问题的解决方案
2018/05/22 jQuery
Vue条件循环判断+计算属性+绑定样式v-bind的实例
2018/09/18 Javascript
JS实现的杨辉三角【帕斯卡三角形】算法示例
2019/02/26 Javascript
javascript异步编程的六种方式总结
2019/05/17 Javascript
优雅的处理vue项目异常实战记录
2019/06/05 Javascript
使用layui实现的左侧菜单栏以及动态操作tab项方法
2019/09/10 Javascript
JavaScript判断数组类型的方法
2019/10/23 Javascript
[02:45]DOTA2英雄敌法师基础教程
2013/11/25 DOTA
[01:23:24]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant BO3 第三场 2月7日
2021/03/11 DOTA
Python编程实现数学运算求一元二次方程的实根算法示例
2017/04/02 Python
Python 做曲线拟合和求积分的方法
2018/12/29 Python
Anaconda+Pycharm环境下的PyTorch配置方法
2020/03/13 Python
python定时截屏实现
2020/11/02 Python
利用html5 file api读取本地文件示例(如图片、PDF等)
2018/03/07 HTML / CSS
基于Canvas+Vue的弹幕组件的实现
2019/07/23 HTML / CSS
英语一分钟演讲稿
2014/04/29 职场文书
联谊活动总结
2014/08/28 职场文书
公司租房协议书范本
2014/10/08 职场文书
实习计划书范文
2015/01/16 职场文书
大学生敬老院活动总结
2015/05/07 职场文书
大学生军训感言
2015/08/01 职场文书
一年之计:2019年下半年的计划
2019/05/07 职场文书