JS将数字金额转换为大写人民币汉字

拼搏现实的明天。 2023-01-02 02:25 311阅读 0赞

转载自 qubernet 博客 JS将数字金额转换为大写人民币汉字

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

发表评论

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

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

相关阅读