获取数字的单位(1万、10万、100万...)

861 阅读1分钟
export const numGetUnit = (__num, __isReturnUnit = false) => { // 数字转换单位  10000 -> 1万
  let wszd = {
    addWan: function (integer, number, mutiple, decimalDigit) {
      var me = this;
      var digit = me.getDigit(integer);
      if (digit > 3) {
        var remainder = digit % 8;
        if (remainder >= 5) { // ‘十万’、‘百万’、‘千万’显示为‘万’ 
          remainder = 4;
        }
        return [Math.round(number / Math.pow(10, remainder + mutiple - decimalDigit)) / Math.pow(10, decimalDigit), '万'];
      } else {
        return [Math.round(number / Math.pow(10, mutiple - decimalDigit)) / Math.pow(10, decimalDigit)];
      }
    },
    getDigit: function (integer) {
      var digit = -1;
      while (integer >= 1) {
        digit++;
        integer = integer / 10;
      }
      return digit;
    },
    addChineseUnit: function (number, decimalDigit = 0) { // decimalDigit:小数点保留多少位 默认0
      var me = this;
      var integer = Math.floor(number);
      var digit = me.getDigit(integer);
      // ['个', '十', '百', '千', '万', '十万', '百万', '千万']; 
      var unit = [];
      if (digit > 3) {
        var multiple = Math.floor(digit / 8);
        if (multiple >= 1) { // 添加亿
          var tmp = Math.round(integer / Math.pow(10, 8 * multiple));
          unit = (me.addWan(tmp, number, 8 * multiple, decimalDigit));
          for (var i = 0; i < multiple; i++) {
            unit.push('亿');
          }
          return unit;
        } else { // 添加万
          return me.addWan(integer, number, 0, decimalDigit);
        }
      } else {
        return [number];
      }
    }
  }
  let arr = wszd.addChineseUnit(__num)
  if (__isReturnUnit) {
    arr.shift();
    return arr.join(""); // 返回单位
  } else {
    return arr[0] // 返回数字
  }
}
//使用
let num = 10000
numGetUnit(num ) // console.log(1) 单独抽出来方便做【数字递增效果】
numGetUnit(num, true) // console.log('万') // 方便额外设置单位的字体样式