PageRenderTime 33ms CodeModel.GetById 14ms app.highlight 16ms RepoModel.GetById 1ms app.codeStats 0ms

/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();