数字转中文(含小数点)

image

numberToChinese(num) {
      return (num) => {
        var AA = new Array('零', '一', '二', '三', '四', '五', '六', '七', '八', '九', '十');
        var BB = new Array('', '十', '百', '仟', '萬', '億', '点', '');
        var a = ('' + num).replace(/(^0*)/g, '').split('.'),
          k = 0,
          re = '';
        for (var i = a[0].length - 1; i >= 0; i--) {
          switch (k) {
            case 0:
              re = BB[7] + re;
              break;
            case 4:
              if (!new RegExp('0{4}//d{' + (a[0].length - i - 1) + '}$').test(a[0])) re = BB[4] + re;
              break;
            case 8:
              re = BB[5] + re;
              BB[7] = BB[5];
              k = 0;
              break;
          }
          if (k % 4 == 2 && a[0].charAt(i + 2) != 0 && a[0].charAt(i + 1) == 0) re = AA[0] + re;
          if (a[0].charAt(i) != 0) re = AA[a[0].charAt(i)] + BB[k % 4] + re;
          k++;
        }

        if (a.length > 1) {
          // 处理小数
          re += BB[6];
          for (var i = 0; i < a[1].length; i++) re += AA[a[1].charAt(i)];
        }
        if (re == '一十') re = '十';
        if (re.match(/^一/) && re.length == 3) re = re.replace('一', '');
        return re;
      };
    }
posted @ 2024-04-15 10:20  东八区  阅读(2)  评论(0编辑  收藏  举报