chineseCash.js 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  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. //最大处理的数字
  15. var maxNum = 999999999999999.9999;
  16. //金额整数部分
  17. var integerNum;
  18. //金额小数部分
  19. var decimalNum;
  20. //输出的中文金额字符串
  21. var chineseStr = '';
  22. //分离金额后用的数组,预定义
  23. var parts;
  24. if (money == '') { return ''; }
  25. money = parseFloat(money);
  26. if (money >= maxNum) {
  27. //超出最大处理数字
  28. return '';
  29. }
  30. if (money == 0) {
  31. chineseStr = cnNums[0] + cnIntLast + cnInteger;
  32. return chineseStr;
  33. }
  34. //转换为字符串
  35. money = money.toString();
  36. if (money.indexOf('.') == -1) {
  37. integerNum = money;
  38. decimalNum = '';
  39. } else {
  40. parts = money.split('.');
  41. integerNum = parts[0];
  42. decimalNum = parts[1].substr(0, 4);
  43. }
  44. //获取整型部分转换
  45. if (parseInt(integerNum, 10) > 0) {
  46. var zeroCount = 0;
  47. var IntLen = integerNum.length;
  48. for (var i = 0; i < IntLen; i++) {
  49. var n = integerNum.substr(i, 1);
  50. var p = IntLen - i - 1;
  51. var q = p / 4;
  52. var m = p % 4;
  53. if (n == '0') {
  54. zeroCount++;
  55. } else {
  56. if (zeroCount > 0) {
  57. chineseStr += cnNums[0];
  58. }
  59. //归零
  60. zeroCount = 0;
  61. chineseStr += cnNums[parseInt(n)] + cnIntRadice[m];
  62. }
  63. if (m == 0 && zeroCount < 4) {
  64. chineseStr += cnIntUnits[q];
  65. }
  66. }
  67. chineseStr += cnIntLast;
  68. }
  69. //小数部分
  70. if (decimalNum != '') {
  71. var decLen = decimalNum.length;
  72. for (var i = 0; i < decLen; i++) {
  73. var n = decimalNum.substr(i, 1);
  74. if (n != '0') {
  75. chineseStr += cnNums[Number(n)] + cnDecUnits[i];
  76. }
  77. }
  78. }
  79. if (chineseStr == '') {
  80. chineseStr += cnNums[0] + cnIntLast + cnInteger;
  81. } else if (decimalNum == '') {
  82. chineseStr += cnInteger;
  83. }
  84. return chineseStr;
  85. }
  86. export {
  87. convertCurrency
  88. }