使用JS将数字金额转为大写的人民币 | 您所在的位置:网站首页 › 人民币大写156574 › 使用JS将数字金额转为大写的人民币 |
使用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 实验室设备网 版权所有 |