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 相关文章推荐
javascript学习笔记(一) 在html中使用javascript
Jun 18 Javascript
jQuery源码中的chunker 正则过滤符分析
Jul 31 Javascript
document.documentElement和document.body区别介绍
Sep 16 Javascript
jQuery设置div一直在页面顶部显示的方法
Oct 24 Javascript
JavaScript截断字符串的方法
Jul 15 Javascript
AngularJS中的Directive自定义一个表格
Jan 25 Javascript
15个值得开发人员关注的jQuery开发技巧和心得总结【经典收藏】
May 25 Javascript
基于vuejs+webpack的日期选择插件
May 21 Javascript
javascript学习之json入门
Dec 22 Javascript
简单实现js点击展开二级菜单功能
May 16 Javascript
详解如何在Angular优雅编写HTTP请求
Dec 05 Javascript
解决VUE项目使用Element-ui 下拉组件的验证失效问题
Nov 07 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中通过Ajax如何实现异步文件上传的代码实例
2011/05/07 PHP
PHP中其实也可以用方法链
2011/11/10 PHP
深入解析php中的foreach问题
2013/06/30 PHP
浅析php学习的路线图
2013/07/10 PHP
PHP生成随机密码方法汇总
2015/08/27 PHP
CI框架表单验证实例详解
2016/11/21 PHP
Laravel框架路由和控制器的绑定操作方法
2018/06/12 PHP
PHP的new static和new self的区别与使用
2019/11/27 PHP
PHP终止脚本运行三种实现方法详解
2020/09/01 PHP
PhpStorm2020 + phpstudyV8 +XDebug的教程详解
2020/09/17 PHP
javascript 多级checkbox选择效果
2009/08/20 Javascript
超棒的响应式布局jQuery插件Freetile.js
2014/11/17 Javascript
JS扩展方法实例分析
2015/04/15 Javascript
JS+CSS实现大气清新的滑动菜单效果代码
2015/10/22 Javascript
Javascript Function.prototype.bind详细分析
2016/12/29 Javascript
基于nodejs 的多页面爬虫实例代码
2017/05/31 NodeJs
vue 怎么创建组件及组件使用方法
2017/07/27 Javascript
AngularJS使用Filter自定义过滤器控制ng-repeat去除重复功能示例
2018/04/21 Javascript
父组件中vuex方法更新state子组件不能及时更新并渲染的完美解决方法
2018/04/25 Javascript
angular实现input输入监听的示例
2018/08/31 Javascript
VUE脚手架的下载和配置步骤详解
2019/04/01 Javascript
微信小程序间使用navigator跳转传值问题实例分析
2020/03/27 Javascript
Vue自定义组件双向绑定实现原理及方法详解
2020/09/03 Javascript
Python高级应用实例对比:高效计算大文件中的最长行的长度
2014/06/08 Python
python实现BP神经网络回归预测模型
2019/08/09 Python
Python3创建Django项目的几种方法(3种)
2020/06/03 Python
html5移动端自适应布局的实现
2020/04/15 HTML / CSS
Dogeared官网:在美国手工制作的珠宝
2019/08/24 全球购物
关于Java String的一道面试题
2013/09/29 面试题
成绩单公证书
2014/04/10 职场文书
庆七一活动总结
2014/08/27 职场文书
纪念九一八事变演讲稿:牢记九一八,屈辱怎能忘
2014/09/14 职场文书
夫妻双方自愿离婚协议书怎么写
2014/12/01 职场文书
介绍长城的导游词
2015/01/30 职场文书
详解Python自动化之文件自动化处理
2021/06/21 Python
教你利用Nginx 服务搭建子域环境提升二维地图加载性能的步骤
2021/09/25 Servers