number.js 2.6 KB

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