/KitJs/src/js/math.js

https://github.com/wuxq/KitJs · JavaScript · 147 lines · 87 code · 0 blank · 60 comment · 27 complexity · 80236168e5bf852bf72a01c3d12e69ef MD5 · raw file

  1. /**
  2. * 数组扩展
  3. * @class $Kit.Math
  4. * @requires kit.js
  5. * @see <a href="https://github.com/xueduany/KitJs/blob/master/KitJs/src/js/math.js">Source code</a>
  6. */
  7. $Kit.Math = function() {
  8. //
  9. }
  10. $kit.merge($Kit.Math.prototype,
  11. /**
  12. * @lends $Kit.Math.prototype
  13. */
  14. {
  15. /**
  16. * 前面补0
  17. * @param {Number|String}
  18. * @param {Number}
  19. * @return {String}
  20. */
  21. padZero : function(num, length) {
  22. var re = num.toString();
  23. do {
  24. var l1 = re.indexOf(".") > -1 ? re.indexOf(".") : re.length;
  25. if(l1 < length) {
  26. re = "0" + re;
  27. }
  28. } while (l1 < length);
  29. return re;
  30. },
  31. /**
  32. * 返回min与max之间的随机数,没有max,则返回0~min之间
  33. * @param {Number}
  34. * @param {Number} [max]
  35. * @return {Number}
  36. */
  37. rand : function(min, max) {
  38. max = max || min || 100;
  39. min = min || 0;
  40. var rnd = Math.round(Math.random() * max);
  41. if(min != 0 && max != min) {
  42. if(min > max) {
  43. max = min;
  44. }
  45. if(min < 0) {
  46. rnd = this.positiveOrNegative() * rnd;
  47. }
  48. while(rnd < min) {
  49. rnd = this.positiveOrNegative() * Math.round(Math.random() * max)
  50. }
  51. }
  52. return rnd;
  53. },
  54. /**
  55. * 随机返回0或者1
  56. * @return {Number}
  57. */
  58. oneOrZero : function() {
  59. return Math.round(Math.random());
  60. },
  61. /**
  62. * 随机返回正或者负,return -1 || +1
  63. * @return {Number}
  64. */
  65. positiveOrNegative : function() {
  66. var flag = this.oneOrZero();
  67. if(flag) {
  68. return 1;
  69. }
  70. return -1;
  71. },
  72. /**
  73. * 取多少位的随机数,返回string
  74. * @param {Number}
  75. * @return {String}
  76. */
  77. randUnit : function(length) {
  78. length = length || 3;
  79. return this.padZero(Math.round(Math.random() * Math.pow(10, length)), length);
  80. },
  81. /**
  82. * 取多少位的随机数,开头非0,返回数字
  83. * @param {Number}
  84. * @return {String}
  85. */
  86. randUnitNotZeroBefore : function(length) {
  87. length = length || 3;
  88. var re = Math.round(Math.random() * Math.pow(10, length));
  89. while(re < Math.pow(10, length - 1)) {
  90. re = Math.round(Math.random() * Math.pow(10, length));
  91. }
  92. return re;
  93. },
  94. /**
  95. * 进制转换
  96. * @param {Number|String}
  97. * @param {Number|String}
  98. * @param {Number|String}
  99. * @return {String}
  100. */
  101. convert : function(str, oldHex, newHex) {
  102. var num = new String(str);
  103. num = parseInt(num, parseInt(oldHex));
  104. return num.toString(parseInt(newHex));
  105. },
  106. /**
  107. * 给数字添加逗号分割
  108. * @param {Number}
  109. * @param {String} [sign] 分隔符号,默认是,
  110. * @param {Number} [n] 默认以千位分割,默人是3,10的3次方
  111. * @return {String}
  112. */
  113. splitNumberWithComma : function(num, sign, n) {
  114. if(sign == null && n == null) {
  115. sign = ',';
  116. n = 3;
  117. } else {
  118. if(n == null) {
  119. if( typeof sign != 'number') {
  120. //
  121. n = 3;
  122. } else {
  123. sign = ',';
  124. n = parseInt(sign);
  125. }
  126. }
  127. }
  128. var s = num.toString().split('');
  129. var a = [], b = [];
  130. for(var i = 0; i < s.length; i++) {
  131. if((s.length - i - 1) % n > 0) {
  132. b.push(s[i]);
  133. } else {
  134. b.push(s[i]);
  135. a.push(b.join(''));
  136. b = [];
  137. }
  138. }
  139. return a.join(sign);
  140. }
  141. });
  142. /**
  143. * $Kit.Math的实例,直接通过这个实例访问$Kit.Math所有方法
  144. * @global
  145. * @type $Kit.Math
  146. */
  147. $kit.math = new $Kit.Math();