使用JS将数字金额转为大写的人民币 您所在的位置:网站首页 人民币大写156574 使用JS将数字金额转为大写的人民币

使用JS将数字金额转为大写的人民币

2023-07-26 14:20| 来源: 网络整理| 查看: 265

使用JS将数字金额转为大写的人民币

刚好今天有时间写文章,就想到了上次做项目时做到的一个需求,拿出来分享一下。

如何将数字金额转为大写人民币?

一点思路 :

封装方法列出大写人民币的所需的单位设置最大处理数 和 最小处理数参数情况处理,比如:参数为 空字符串,为0,为字符串,有小数,无小数等。

所需单位

//汉字的数字 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 ''; }

处理参数为 0

// 传入的参数为0情况 if(money == 0) { chineseStr = cnNums[0] + cnIntLast + cnInteger; return chineseStr }

其它

money= parseFloat(money) if(money >= maxNum){ return '' } // 转为字符串 money = money.toString(); // indexOf 检测某字符在字符串中首次出现的位置 返回索引值(从0 开始) -1 代表无 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){ let zeroCount = 0; let IntLen = integerNum.length for(let i = 0; i zeroCount ++ ; }else{ if(zeroCount > 0){ chineseStr += cnNums[0] } zeroCount = 0; chineseStr += cnNums[parseInt(n)] + cnIntRadice[m]; } if(m == 0 && zeroCount let decLen = decimalNum.length; for(let i = 0; i chineseStr += cnNums[Number(n)] + cnDecUnits[i] } } } if(chineseStr == ''){ chineseStr += cnNums[0] + cnIntLast + cnInteger; }else if(decimalNum == ''){ chineseStr += cnInteger; }

最后封装到一个方法中去:(完整代码)

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 '' } // 传入的参数为0情况 if(money == 0) { chineseStr = cnNums[0] + cnIntLast + cnInteger; return chineseStr } // 转为字符串 money = money.toString(); // indexOf 检测某字符在字符串中首次出现的位置 返回索引值(从0 开始) -1 代表无 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){ let zeroCount = 0; let IntLen = integerNum.length for(let i = 0; i zeroCount ++ ; }else{ if(zeroCount > 0){ chineseStr += cnNums[0] } zeroCount = 0; chineseStr += cnNums[parseInt(n)] + cnIntRadice[m]; } if(m == 0 && zeroCount let decLen = decimalNum.length; for(let i = 0; i chineseStr += cnNums[Number(n)] + cnDecUnits[i] } } } if(chineseStr == ''){ chineseStr += cnNums[0] + cnIntLast + cnInteger; }else if(decimalNum == ''){ chineseStr += cnInteger; } return chineseStr }

调用方法进行测试

console.log(convertCurrency(345.44998)); // 叁佰肆拾伍元肆角肆分玖毫玖厘


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有