将数字转换为中文

刺骨的言语ヽ痛彻心扉 2024-04-17 06:16 136阅读 0赞
功能需求

做公司项目遇到一个有关交易金额(合同签订书)的内容,需要将查询出来的交易金额转化为中文数字,例如:壹拾捌万伍仟元整(185000.00)

需求分析

因为合同书中的数据都是动态的,且一分合同书中有好几处涉及到金额转换,不可能写死在页面,最有效的方法就是:遍历获取数字金额,将之转换后输出到页面。那该如何实现呢?

具体实现
  1. /**
  2. * 将数字转换为大写金额的函数
  3. * @param money
  4. * @returns {string}
  5. */
  6. function convertCurrency(money) {
  7. //汉字的数字
  8. var cnNums = new Array('零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖');
  9. //基本单位
  10. var cnIntRadice = new Array('', '拾', '佰', '仟');
  11. //对应整数部分扩展单位
  12. var cnIntUnits = new Array('', '万', '亿', '兆');
  13. //对应小数部分单位
  14. var cnDecUnits = new Array('角', '分', '毫', '厘');
  15. //整数金额时后面跟的字符
  16. // var cnInteger = '整';
  17. var cnInteger = '整';
  18. //整型完以后的单位
  19. var cnIntLast = '元';
  20. //最大处理的数字
  21. var maxNum = 999999999999999.9999;
  22. //金额整数部分
  23. var integerNum;
  24. //金额小数部分
  25. var decimalNum;
  26. //输出的中文金额字符串
  27. var chineseStr = '';
  28. //分离金额后用的数组,预定义
  29. var parts;
  30. if (money == '') {
  31. return '';
  32. }
  33. money = parseFloat(money);
  34. if (money >= maxNum) {
  35. //超出最大处理数字
  36. return '';
  37. }
  38. if (money == 0) {
  39. chineseStr = cnNums[0] + cnIntLast + cnInteger;
  40. return chineseStr;
  41. }
  42. //转换为字符串
  43. money = money.toString();
  44. if (money.indexOf('.') == -1) {
  45. integerNum = money;
  46. decimalNum = '';
  47. } else {
  48. parts = money.split('.');
  49. integerNum = parts[0];
  50. decimalNum = parts[1].substr(0, 4);
  51. }
  52. //获取整型部分转换
  53. if (parseInt(integerNum, 10) > 0) {
  54. var zeroCount = 0;
  55. var IntLen = integerNum.length;
  56. for (var i = 0; i < IntLen; i++) {
  57. var n = integerNum.substr(i, 1);
  58. var p = IntLen - i - 1;
  59. var q = p / 4;
  60. var m = p % 4;
  61. if (n == '0') {
  62. zeroCount++;
  63. } else {
  64. if (zeroCount > 0) {
  65. chineseStr += cnNums[0];
  66. }
  67. //归零
  68. zeroCount = 0;
  69. chineseStr += cnNums[parseInt(n)] + cnIntRadice[m];
  70. }
  71. if (m == 0 && zeroCount < 4) {
  72. chineseStr += cnIntUnits[q];
  73. }
  74. }
  75. chineseStr += cnIntLast;
  76. }
  77. //小数部分
  78. if (decimalNum != '') {
  79. var decLen = decimalNum.length;
  80. for (var i = 0; i < decLen; i++) {
  81. var n = decimalNum.substr(i, 1);
  82. if (n != '0') {
  83. chineseStr += cnNums[Number(n)] + cnDecUnits[i];
  84. }
  85. }
  86. }
  87. if (chineseStr == '') {
  88. chineseStr += cnNums[0] + cnIntLast + cnInteger;
  89. } else if (decimalNum == '') {
  90. chineseStr += cnInteger;
  91. }
  92. return chineseStr;
  93. };
如何调用

函数/方法写好在上面了,该如何调用呢?

  1. <script type="text/javascript">
  2. /**
  3. * 遍历数字式的金额,将之转化为汉字
  4. * */
  5. $(function getCNMoney() {
  6. //遍历类名为money_num的元素,获取其文本,将之传给转换方法
  7. $('.money_num').each(function () {
  8. var money_num = $(this).text();
  9. $(this).parent().siblings('.shortSpan').children('.money_CN').text(convertCurrency(money_num));
  10. });
  11. });
  12. </script>
实现效果

在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,136人围观)

还没有评论,来说两句吧...

相关阅读