dengjunjie
5 天以前 4f39dcc195f28fa275fc2d065fbf1bf6a46c21b7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
/**
 * 格式化数字字符串
 * @param {String, Number} value 待格式化的字符串
 * @param {Number} digits 保留位数 
 */
function formatNumberString(value, digits = 2) {
  let number = 0
  // 判断是什么类型
  if (typeof value === 'string') {
    number = Number(value)
  } else if (typeof value === 'number') {
    number = value
  }
  if (isNaN(number) || number === 0) {
    return 0
  }
  
  let maxNumber = Math.pow(10, digits) - 1
  if (number > maxNumber) {
    return `${maxNumber}+`
  }
  
  return number
}
 
/**
 * 格式化数字字符串,往数字前添加0
 * 
 * @param {Object} num 待格式化的数值
 */
function formatNumberAddZero(value) {
  let number = 0
  // 判断是什么类型
  if (typeof value === 'string') {
    number = Number(value)
  } else if (typeof value === 'number') {
    number = value
  }
  if (isNaN(number) || +number < 10) {
    return '0' + number
  } else {
    return String(number)
  }
  
}
 
/**
 * 格式化数字,往数值后添加单位
 *
 * @param {Object} value 待格式化的数值
 * @param {Object} digits 保留位数
 */
function formatNumberAddPriceUnit(value, digits = 2) {
  // 数值分割点
  const unitSplit = [
    { value: 1, symbol: ''},
    { value: 1E3, symbol: 'K'},
    { value: 1E4, symbol: 'W'},
  ]
  
  const reg = /\.0+$|(\.[0=9]*[1-9])0+$/
  
  let number = 0
  // 判断是什么类型
  if (typeof value === 'string') {
    number = Number(value)
  } else if (typeof value === 'number') {
    number = value
  }
  
  let i
  for (i = unitSplit.length - 1; i > 0; i--) {
    if (number >= unitSplit[i].value) break
  }
  return (number / unitSplit[i].value).toFixed(digits).replace(reg, "$1") + unitSplit[i].symbol
}
 
/**
 * 获取数值的整数位数
 *
 * @param {Object} number 数值 
 */
function getDigit(number) {
  let digit = -1
  while (number >= 1) {
    digit++
    number = number / 10
  }
  return digit
}
 
/**
 * 获取指定范围的随机数(返回整数)
 
 * @param {Object} min 最小值
 * @param {Object} max 最大值
 */
function random(min, max) {
  if (min >= 0 && max > 0 && max >= min) {
    let gab = max - min
    return Math.random() * gab + min
  } else {
    return 0
  }
}
 
/**
 * 获取指定范围的随机数(返回整数)
 
 * @param {Object} min 最小值
 * @param {Object} max 最大值
 */
function randomInt(min, max) {
  if (min >= 0 && max > 0 && max >= min) {
    let gab = max - min + 1
    return Math.floor(Math.random() * gab + min)
  } else {
    return 0
  }
}
 
export default {
  formatNumberString,
  formatNumberAddZero,
  formatNumberAddPriceUnit,
  random,
  randomInt
}