|
@@ -1,302 +0,0 @@
|
|
|
-Number.prototype.toFixed = function(j) {
|
|
|
- var h = this + "";
|
|
|
- if (!j) {
|
|
|
- j = 0
|
|
|
- }
|
|
|
- if (h.indexOf(".") == -1) {
|
|
|
- h += "."
|
|
|
- }
|
|
|
- h += new Array(j + 1).join("0");
|
|
|
- if (new RegExp("^(-|\\+)?(\\d+(\\.\\d{0," + (j + 1) + "})?)\\d*$").test(h)) {
|
|
|
- var h = "0" + RegExp.$2
|
|
|
- , g = RegExp.$1
|
|
|
- , e = RegExp.$3.length
|
|
|
- , c = true;
|
|
|
- if (e == j + 2) {
|
|
|
- e = h.match(/\d/g);
|
|
|
- if (parseInt(e[e.length - 1]) > 4) {
|
|
|
- for (var f = e.length - 2; f >= 0; f--) {
|
|
|
- e[f] = parseInt(e[f]) + 1;
|
|
|
- if (e[f] == 10) {
|
|
|
- e[f] = 0;
|
|
|
- c = f != 1
|
|
|
- } else {
|
|
|
- break
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- h = e.join("").replace(new RegExp("(\\d+)(\\d{" + j + "})\\d$"), "$1.$2")
|
|
|
- }
|
|
|
- if (c) {
|
|
|
- h = h.substr(1)
|
|
|
- }
|
|
|
- return (g + h).replace(/\.$/, "")
|
|
|
- }
|
|
|
- return this + ""
|
|
|
-}
|
|
|
-;
|
|
|
-var CalcEvalMin = function() {};
|
|
|
-CalcEvalMin.prototype.eval = function(str) {
|
|
|
- var isRetStr = str.match(new RegExp(/^".+"$/g)) != null;
|
|
|
- if (isRetStr == true) {
|
|
|
- str = str.replace(/^"|"$/g, "")
|
|
|
- }
|
|
|
- var bracketsList = this.matchOutBrackets(str);
|
|
|
- for (var i = 0; i < bracketsList.length; i++) {
|
|
|
- var newCalc = bracketsList[i];
|
|
|
- var calcStr = this.eval(newCalc.str.replace(/^\(|\)$/g, ""));
|
|
|
- str = str.replace(newCalc.str, calcStr)
|
|
|
- }
|
|
|
- var errorObj = new Array();
|
|
|
- while (1) {
|
|
|
- var multObj = this.matchExp(str, "/");
|
|
|
- if (multObj == null) {
|
|
|
- break
|
|
|
- }
|
|
|
- var v = this.executeDivi(multObj.firstValue, multObj.secondValue);
|
|
|
- if (v == "NaN") {
|
|
|
- var t = "T" + new Date().getTime();
|
|
|
- errorObj.push({
|
|
|
- Name: t,
|
|
|
- Exp: multObj.str
|
|
|
- });
|
|
|
- str = str.replace(multObj.str, t)
|
|
|
- } else {
|
|
|
- str = str.replace(multObj.str, v)
|
|
|
- }
|
|
|
- }
|
|
|
- while (1) {
|
|
|
- var multObj = this.matchExp(str, "*");
|
|
|
- if (multObj == null) {
|
|
|
- break
|
|
|
- }
|
|
|
- var v = this.executeMult(multObj.firstValue, multObj.secondValue);
|
|
|
- if (v == "NaN") {
|
|
|
- var t = "T" + new Date().getTime();
|
|
|
- errorObj.push({
|
|
|
- Name: t,
|
|
|
- Exp: multObj.str
|
|
|
- });
|
|
|
- str = str.replace(multObj.str, t)
|
|
|
- } else {
|
|
|
- str = str.replace(multObj.str, v)
|
|
|
- }
|
|
|
- }
|
|
|
- while (1) {
|
|
|
- var multObj = this.matchExp(str, "+");
|
|
|
- if (multObj == null) {
|
|
|
- break
|
|
|
- }
|
|
|
- var v = this.executeAddi(multObj.firstValue, multObj.secondValue);
|
|
|
- if (v == "NaN" || isNaN(v)) {
|
|
|
- var t = "T" + new Date().getTime();
|
|
|
- errorObj.push({
|
|
|
- Name: t,
|
|
|
- Exp: multObj.str
|
|
|
- });
|
|
|
- str = str.replace(multObj.str, t)
|
|
|
- } else {
|
|
|
- str = str.replace(multObj.str, v)
|
|
|
- }
|
|
|
- }
|
|
|
- while (1) {
|
|
|
- var multObj = this.matchExp(str, "-");
|
|
|
- if (multObj == null) {
|
|
|
- break
|
|
|
- }
|
|
|
- var v = this.executeSubt(multObj.firstValue, multObj.secondValue);
|
|
|
- if (v == "NaN") {
|
|
|
- var t = "T" + new Date().getTime();
|
|
|
- errorObj.push({
|
|
|
- Name: t,
|
|
|
- Exp: multObj.str
|
|
|
- });
|
|
|
- str = str.replace(multObj.str, t)
|
|
|
- } else {
|
|
|
- str = str.replace(multObj.str, v)
|
|
|
- }
|
|
|
- }
|
|
|
- for (var i = errorObj.length - 1; i >= 0; i--) {
|
|
|
- var ex = errorObj[i];
|
|
|
- str = str.replace(ex.Name, ex.Exp)
|
|
|
- }
|
|
|
- while (1) {
|
|
|
- var multObj = str.match(/\d*={2,3}\d*/g);
|
|
|
- if (multObj == null) {
|
|
|
- break
|
|
|
- }
|
|
|
- var v = eval(multObj[0]);
|
|
|
- str = str.replace(multObj[0], v)
|
|
|
- }
|
|
|
- if (isRetStr == true) {
|
|
|
- try {
|
|
|
- return eval('"' + str + '"')
|
|
|
- } catch (e) {}
|
|
|
- try {
|
|
|
- return eval(str)
|
|
|
- } catch (e) {}
|
|
|
- return str
|
|
|
- }
|
|
|
- if (str.match(/(^true$)|(^false$)/g)) {
|
|
|
- return str === "true"
|
|
|
- }
|
|
|
- if (!isNaN(Number(str))) {
|
|
|
- return Number(str)
|
|
|
- }
|
|
|
- try {
|
|
|
- return eval(str)
|
|
|
- } catch (e) {}
|
|
|
- return str
|
|
|
-}
|
|
|
-;
|
|
|
-CalcEvalMin.prototype.matchOutBrackets = function(f) {
|
|
|
- var h = new Array();
|
|
|
- if (f == null) {
|
|
|
- return h
|
|
|
- }
|
|
|
- if (typeof f != "string") {
|
|
|
- f = f + ""
|
|
|
- }
|
|
|
- var d = f.split("");
|
|
|
- var a = 0;
|
|
|
- var g = false;
|
|
|
- var b = -1;
|
|
|
- for (var c = 0; c < d.length; c++) {
|
|
|
- if (d[c] == "(") {
|
|
|
- a++;
|
|
|
- g = true;
|
|
|
- if (b == -1) {
|
|
|
- b = c
|
|
|
- }
|
|
|
- }
|
|
|
- if (d[c] == ")") {
|
|
|
- a--
|
|
|
- }
|
|
|
- if (g == true && a == 0) {
|
|
|
- var e = new Object();
|
|
|
- e.str = f.substring(b, c + 1);
|
|
|
- e.firstIndex = b;
|
|
|
- e.lastIndex = c + 1;
|
|
|
- h.push(e);
|
|
|
- b = -1;
|
|
|
- g = false;
|
|
|
- a = 0
|
|
|
- }
|
|
|
- }
|
|
|
- return h
|
|
|
-}
|
|
|
-;
|
|
|
-CalcEvalMin.prototype.matchExp = function(l, f) {
|
|
|
- var j = null;
|
|
|
- if (l == null) {
|
|
|
- return retList
|
|
|
- }
|
|
|
- if (typeof l != "string") {
|
|
|
- l = l + ""
|
|
|
- }
|
|
|
- var k = l.split("");
|
|
|
- var c = 0;
|
|
|
- var b = 0;
|
|
|
- var g = "";
|
|
|
- var e = "";
|
|
|
- var a = "";
|
|
|
- var d = false;
|
|
|
- for (var h = 0; h <= k.length; h++) {
|
|
|
- if (k[h] == "+" || k[h] == "-" || k[h] == "*" || k[h] == "/" || k[h] == "%" || h == k.length) {
|
|
|
- if (a == "" && k[h] == "-") {
|
|
|
- a += k[h];
|
|
|
- continue
|
|
|
- }
|
|
|
- if (d == true) {
|
|
|
- e = a;
|
|
|
- b = h;
|
|
|
- j = new Object();
|
|
|
- j.firstIndex = c;
|
|
|
- j.secondIndex = b;
|
|
|
- j.str = l.substring(c, b);
|
|
|
- j.firstValue = Number(g);
|
|
|
- j.secondValue = Number(e);
|
|
|
- break
|
|
|
- }
|
|
|
- if (k[h] == null) {
|
|
|
- break
|
|
|
- }
|
|
|
- if (k[h] == f) {
|
|
|
- d = true;
|
|
|
- g = a;
|
|
|
- a = ""
|
|
|
- } else {
|
|
|
- a = "";
|
|
|
- c = -1
|
|
|
- }
|
|
|
- } else {
|
|
|
- a += k[h];
|
|
|
- if (c == -1) {
|
|
|
- c = h
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- return j
|
|
|
-}
|
|
|
-;
|
|
|
-CalcEvalMin.prototype.executeMult = function(d, b) {
|
|
|
- var a = 0
|
|
|
- , f = d.toString()
|
|
|
- , c = b.toString();
|
|
|
- try {
|
|
|
- a += f.split(".")[1].length
|
|
|
- } catch (g) {}
|
|
|
- try {
|
|
|
- a += c.split(".")[1].length
|
|
|
- } catch (g) {}
|
|
|
- return Number(f.replace(".", "")) * Number(c.replace(".", "")) / Math.pow(10, a)
|
|
|
-}
|
|
|
-;
|
|
|
-CalcEvalMin.prototype.executeDivi = function(arg1, arg2) {
|
|
|
- var t1 = 0, t2 = 0, r1, r2;
|
|
|
- try {
|
|
|
- t1 = arg1.toString().split(".")[1].length
|
|
|
- } catch (e) {}
|
|
|
- try {
|
|
|
- t2 = arg2.toString().split(".")[1].length
|
|
|
- } catch (e) {}
|
|
|
- with (Math) {
|
|
|
- r1 = Number(arg1.toString().replace(".", ""));
|
|
|
- r2 = Number(arg2.toString().replace(".", ""));
|
|
|
- return this.executeMult(r1 / r2, pow(10, t2 - t1))
|
|
|
- }
|
|
|
-}
|
|
|
-;
|
|
|
-CalcEvalMin.prototype.executeAddi = function(arg1, arg2) {
|
|
|
- var r1, r2, m;
|
|
|
- try {
|
|
|
- r1 = arg1.toString().split(".")[1].length
|
|
|
- } catch (e) {
|
|
|
- r1 = 0
|
|
|
- }
|
|
|
- try {
|
|
|
- r2 = arg2.toString().split(".")[1].length
|
|
|
- } catch (e) {
|
|
|
- r2 = 0
|
|
|
- }
|
|
|
- m = Math.pow(10, Math.max(r1, r2));
|
|
|
- return (this.eval(arg1 + "*" + m) + this.eval(arg2 + "*" + m)) / m
|
|
|
-}
|
|
|
-;
|
|
|
-CalcEvalMin.prototype.executeSubt = function(arg1, arg2) {
|
|
|
- var r1, r2, m, n;
|
|
|
- try {
|
|
|
- r1 = arg1.toString().split(".")[1].length
|
|
|
- } catch (e) {
|
|
|
- r1 = 0
|
|
|
- }
|
|
|
- try {
|
|
|
- r2 = arg2.toString().split(".")[1].length
|
|
|
- } catch (e) {
|
|
|
- r2 = 0
|
|
|
- }
|
|
|
- m = Math.pow(10, Math.max(r1, r2));
|
|
|
- n = (r1 >= r2) ? r1 : r2;
|
|
|
- return ((this.eval(arg1 + "*" + m) - this.eval(arg2 + "*" + m)) / m).toFixed(n)
|
|
|
-}
|
|
|
-;
|