Js计算器(简单实用)

项目中用到,主要用于在一个TEXTBOX中实现类似EXCEL中的公式功能,随手写了一个,没怎么调试,可能问题比较多,主要是用着方便就行;记录下来,可能会用到。

计算(不考虑括号)
 1 function JSQ(obj)
2 {
3 var strExpression = obj.value;
4 if(strExpression=="")
5 {
6 return;
7 }
8 if(strExpression.substr(0,1)=="=")
9 {
10 var expression = strExpression.substr(1)
11 if(expression != "")
12 {
13 obj.value = JsMath(expression);
14 }
15 }
16 }
17
18 function JsMath(strExpression)
19 {
20 var flVal = parseFloat(0);
21 var MathExpression = strExpression.split("+");
22 for(var i=0;i<MathExpression.length;i++)
23 {
24 if(i==0)
25 flVal = parseFloat(JsMathLess(MathExpression[i]));
26 else
27 flVal = flVal + parseFloat(JsMathLess(MathExpression[i]));
28 }
29 return flVal;
30 }
31 function JsMathLess(strExpression)
32 {
33 var flVal = parseFloat(0);
34 var MathExpression = strExpression.split("-");
35 for(var i=0;i<MathExpression.length;i++)
36 {
37 if(i==0)
38 flVal = parseFloat(JsMathMult(MathExpression[i]));
39 else
40 flVal = flVal - parseFloat(JsMathMult(MathExpression[i]));
41 }
42 return flVal;
43 }
44 function JsMathMult(strExpression)
45 {
46 var flVal = parseFloat(0);
47 var MathExpression = strExpression.split("*");
48 for(var i=0;i<MathExpression.length;i++)
49 {
50 if(i==0)
51 flVal = parseFloat(JsMathAddu(MathExpression[i]));
52 else
53 flVal = flVal * parseFloat(JsMathAddu(MathExpression[i]));
54 }
55 return flVal;
56 }
57 function JsMathAddu(strExpression)
58 {
59 var flVal = parseFloat(0);
60 var MathExpression = strExpression.split("/");
61 for(var i=0;i<MathExpression.length;i++)
62 {
63 if(i==0)
64 flVal = parseFloat(MathExpression[i]);
65 else
66 flVal = flVal / parseFloat(MathExpression[i]);
67 }
68 return flVal;
69 }
保留两位小数(四舍五入)
1 function changeTwoDecimal(x) {
2 var f_x = parseFloat(x);
3 if (isNaN(f_x)) {
4 alert('function:changeTwoDecimal->parametererror');
5 return false;
6 }
7 var f_x = Math.round(x * 100) / 100;
8 return f_x;
9 }
强制两位小数(不四舍五入)
 1 function changeTwoDecimal_f(x) {
2 var f_x = parseFloat(x);
3 if (isNaN(f_x)) {
4 alert('function:changeTwoDecimal->parameter error');
5 return false;
6 }
7 var f_x = Math.round(x * 100) / 100;
8 var s_x = f_x.toString();
9 var pos_decimal = s_x.indexOf('.');
10 if (pos_decimal < 0) {
11 pos_decimal = s_x.length;
12 s_x += '.';
13 }
14 while (s_x.length <= pos_decimal + 2) {
15 s_x += '0';
16 }
17 return s_x;
18 }





posted @ 2011-12-21 15:26  gfaxd  Views(192)  Comments(0)    收藏  举报