2018-04-28 JS实现将数字金额转换为大写人民币汉字的方法

function convertCurrency(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;

}

截图如下:

dasd

/**

* 将数值四舍五入(保留2位小数)后格式化成金额形式(金额的形式比如19276.33,形成的格式是19,276.33)

*

* @param num 数值(Number或者String)

* @return 金额格式的字符串,如'1,234,567.45'

* @type String

*/

function formatCurrency(num) {

num = num.toString().replace(/\$|\,/g,'');

if(isNaN(num))

num ="0";

sign = (num == (num =Math.abs(num)));

num =Math.floor(num*100+0.50000000001);

cents = num%100;

num =Math.floor(num/100).toString();

if(cents<10)

cents ="0" +cents;

for (var i =0;i

num = num.substring(0,num.length-(4*i+3))+','+

num.substring(num.length-(4*i+3));

return (((sign)?'':'-') + num +'.' +cents);

}




/**

* 将数值四舍五入(保留2位小数)(Number)

*

* @param num 数值(Number或者String)

* @return 金额格式的字符串,如'1234567.45'

* @type String

*/

function formatCurrency2(num) {

num = num !=null && num !=undefined ? num.toString().replace(/\$|\,/g,'') :"0";

if(isNaN(num))

num ="0";

sign = (num == (num =Math.abs(num)));

num =Math.floor(num*100+0.50000000001);

cents = num%100;

num =Math.floor(num/100).toString();

if(cents<10)

cents ="0" +cents;

return (((sign)?'':'-') + num +'.' +cents);

}


/**

* 将数值四舍五入(保留4位小数)后格式化成汇率形式

*

* @param num 数值(Number或者String)

* @return 汇率格式的字符串,如'1,234,567.4233'

* @type String

*/

function formatRate(num) {

num = num.toString().replace(/\$|\,/g,'');

if(isNaN(num))

num ="0";

sign = (num == (num =Math.abs(num)));

num =Math.floor(num*10000+0.50000000001);

cents = num%10000;

num =Math.floor(num/10000).toString();

if(cents<1000)

cents ="000" +cents;

for (var i =0;i

num = num.substring(0,num.length-(4*i+3))+','+

num.substring(num.length-(4*i+3));

return (((sign)?'':'-') + num +'.' +cents);

};

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • JavaScript 1. type 类型判断 isString (o) {//是否字符串 returnObjec...
    Mr_ZhangH阅读 644评论 0 1
  • functionchangeMoneyToChinese(money) { varcnNums= newArray...
    encoded阅读 858评论 0 1
  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,195评论 0 13
  • 今天是妈妈七十八岁的阳生,若母亲还在就七十八岁了,不能想象若活着会是啥模样了?非常非常想她…… 思母 清明时节母亲...
    张路儿阅读 373评论 0 1
  • 今日收获 产品设计实习生面试指南 练习从更高层面分析 app。忘掉颜色、排版和按钮设计,取而代之,深入思考app ...
    张轩铭阅读 540评论 0 0