js 之 Number 工具类
js 之 Number 工具类
Js代码1.//只能输入整数
2.function onlyInteger(obj) {
3. var curVal = obj.value + '';
4. if(curVal.length > 1) {
5. var filterValue = obj.value.replace(/[^\d]/g,'').replace(/^0\d*$/g,'');
6. if(obj.value != filterValue) {
7. obj.value = filterValue;
8. }
9. } else {
10. obj.value = obj.value.replace(/\D/g,'');
11. }
12.}
13.
14.//只能输入2位金额
15.function onlyMoney(obj) {
16. var curVal = obj.value + '';
17. if(curVal.length > 1) {
18. var filterValue = obj.value.replace(/^\D*(\d*(?:\.\d{0,2})?).*$/g, '$1').replace(/^0(\d{1,10}(?:\.\d{0,2})?)*$/g, '');
19. if(obj.value != filterValue) {
20. obj.value = filterValue;
21. }
22. } else {
23. obj.value = obj.value.replace(/\D/g,'');
24. }
25.}
26.//只能输入3位重量
27.function onlyWeight(obj) {
28. var curVal = obj.value + '';
29. if(curVal.length > 1) {
30. var filterValue = obj.value.replace(/^\D*(\d*(?:\.\d{0,3})?).*$/g, '$1').replace(/^0(\d{1,10}(?:\.\d{0,3})?)*$/g, '');
31. if(obj.value != filterValue) {
32. obj.value = filterValue;
33. }
34. } else {
35. obj.value = obj.value.replace(/\D/g,'');
36. }
37.}
38.//参数说明:num 要格式化的数字 n 保留小数位
39.function formatMoney(num,n) {
40. if(num&&n){
41. num=parseFloat(num);
42. num=String(num.toFixed(n));
43. var re=/(-?\d+)(\d{3})/;
44. while(re.test(num))
45. num=num.replace(re,"$1,$2")
46. return num;
47. }else{
48. return "0.00";
49. }
50.}
51.
52.//分转元
53.function fToy(money) {
54. return (parseFloat(money).div(100));
55.}
56.
57.//元转分
58.function yTof(money) {
59. return (parseFloat(money).mul(100));
60.}
61.
62.//除法函数,用来得到精确的除法结果
63.//说明:javascript的除法结果会有误差,在两个浮点数相除的时候会比较明显。这个函数返回较为精确的除法结果。
64.//调用:accDiv(arg1,arg2)
65.//返回值:arg1除以arg2的精确结果
66.function accDiv(arg1,arg2){
67. var t1=0,t2=0,r1,r2;
68. try{t1=arg1.toString().split(".").length}catch(e){}
69. try{t2=arg2.toString().split(".").length}catch(e){}
70. with(Math){
71. r1=Number(arg1.toString().replace(".",""))
72. r2=Number(arg2.toString().replace(".",""))
73. return (r1/r2)*pow(10,t2-t1);
74. }
75.}
76.
77.//给Number类型增加一个div方法,调用起来更加方便。
78.Number.prototype.div = function (arg){
79. return accDiv(this, arg);
80.}
81.
82.//乘法函数,用来得到精确的乘法结果
83.//说明:javascript的乘法结果会有误差,在两个浮点数相乘的时候会比较明显。这个函数返回较为精确的乘法结果。
84.//调用:accMul(arg1,arg2)
85.//返回值:arg1乘以 arg2的精确结果
86.function accMul(arg1,arg2)
87.{
88. var m=0,s1=arg1.toString(),s2=arg2.toString();
89. try{m+=s1.split(".").length}catch(e){}
90. try{m+=s2.split(".").length}catch(e){}
91. return Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m)
92.}
93.
94.// 给Number类型增加一个mul方法,调用起来更加方便。
95.Number.prototype.mul = function (arg){
96. return accMul(arg, this);
97.}
98.
99.function accDiv(arg1, arg2) {
100. var t1 = 0, t2 = 0, r1, r2;
101. try { t1 = arg1.toString().split(".").length } catch (e) { }
102. try { t2 = arg2.toString().split(".").length } catch (e) { }
103. with (Math) {
104. r1 = Number(arg1.toString().replace(".", ""))
105. r2 = Number(arg2.toString().replace(".", ""))
106. return (r1 / r2) * pow(10, t2 - t1);
107. }
108.}
109.//给Number类型增加一个div方法,调用起来更加方便。
110.Number.prototype.div = function(arg) {
111. return accDiv(this, arg);
112.}
113.function accMul(arg1, arg2) {
114. var m = 0, s1 = arg1.toString(), s2 = arg2.toString();
115. try { m += s1.split(".").length } catch (e) { }
116. try { m += s2.split(".").length } catch (e) { }
117. return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m)
118.}
119.Number.prototype.mul = function(arg) {
120. return accMul(arg, this);
121.}
122.function accAdd(arg1, arg2) {
123. var r1, r2, m, c;
124. try { r1 = arg1.toString().split(".").length } catch (e) { r1 = 0 }
125. try { r2 = arg2.toString().split(".").length } catch (e) { r2 = 0 }
126. c = Math.abs(r1 - r2);
127. m = Math.pow(10, Math.max(r1, r2))
128. if (c > 0) {
129. var cm = Math.pow(10, c);
130. if (r1 > r2) {
131. arg1 = Number(arg1.toString().replace(".", ""));
132. arg2 = Number(arg2.toString().replace(".", "")) * cm;
133. } else {
134. arg1 = Number(arg1.toString().replace(".", "")) * cm;
135. arg2 = Number(arg2.toString().replace(".", ""));
136. }
137. } else {
138. arg1 = Number(arg1.toString().replace(".", ""));
139. arg2 = Number(arg2.toString().replace(".", ""));
140. }
141. return (arg1 + arg2) / m
142.}
143.Number.prototype.add = function(arg) {
144. return accAdd(arg, this);
145.}
146.
147.//排序方法
148.function compareInt(x, y){
149. var iNum1 = parseInt(x);//强制转换成int型;
150. var iNum2 = parseInt(y);
151. if(iNum1 < iNum2){
152. return -1;
153. }else if(iNum1 > iNum2){
154. return 1;
155. }else{
156. return 0;
157. }
158.}
谢谢分享
页:
[1]