JS數學表示式運算

2021-07-04 07:59:19 字數 1877 閱讀 2223

在專案中經常碰到js精度問題,且常用到連續的運算

故寫了個簡單的數學表示式計算,僅支援+ - * /  ( )

計算結果

// math.express("(3*(1+2.3)-6)/3*(5-1*(1+1))-2") => 1.9

// math.express.add(1.2,3.33) => 4.53

math.express = (function() 

// 兩個浮點數求和

express.add = function(a, b) catch (e)

try catch (e)

m = math.pow(10, math.max(r1, r2));

return math.round(a * m + b * m) / m;

} // 兩個浮點數相減

express.sub = function(a, b) catch (e)

try catch (e)

m = math.pow(10, math.max(r1, r2));

n = (r1 >= r2) ? r1 : r2;

return (math.round(a * m - b * m) / m).tofixed(n);

} // 兩數相除

express.div = function(a, b) catch (e)

try catch (e)

r1 = number(a.tostring().replace(".", ""));

r2 = number(b.tostring().replace(".", ""));

return (r1 / r2) * math.pow(10, t2 - t1);

} express.mul = function(a, b) catch (e)

try catch (e)

return number(s1.replace(".", "")) * number(s2.replace(".", "")) / math.pow(10, m);

} // 運算子優先順序

var priority = express.priority = ;

var cal = ,

"-" : function(a, b) ,

"*" : function(a, b) ,

"/" : function(a, b)

};// 中綴表示式轉字尾表示式

function c2a(exp) (?:\.\d+)?|[\+\-\*\/\%\(\)]/g);

var stack = , result = ;

stack.peek = function()

for (var i = 0; i < exp.length; i++) (?:\.\d+)?/.test(v)) else if (stack.length === 0) else if (v == "(") else if (v == ")")

}stack.pop();

} else if (/[\+\-\*\/\%]/.test(v))

stack.push(v);}}

// 6.最終將棧中的元素依次出棧,輸出。

while (stack.length > 0)

result.push(stack.pop())

}return result;

} // 計算結果

function cc(queue) (?:\.\d+)?/.test(v)) else

}if (stack.length === 1)

return null;

} return express;

})();

數學表示式

只做 1或者2操作,使得給定乙個目標數,乙個初始數,使得初始數到目標數的步驟最短。23 52 1 2 1 113 11 1 1 1 222 1 先判斷目標數字和原始數字的大小,然後在判斷目標數是否為奇數,若是,則 1變成偶數在遞迴,在判斷原始數 2是否大於目標數,若不大於,則做乘2的操作。若小於則不...

Js運算子和表示式

由運算子鏈結的運算元據,所組成的形式稱為表示式 1 算數運算子 取餘console.log 3 2 console.log 2 3 結果 應用 比如隔行換色,奇數行和偶數行換色,比如對2取餘,是1就是奇數行,0是偶數行 通過身份證獲取性別,身份證倒數第二位為偶數,則是女性 自增 var i 1 i ...

模板 表示式運算

這些都是emmmm 給出乙個表示式,其中運算子僅包含 要求求出表示式的最終值資料可能會出現括號情況 還有可能出現多餘括號情況資料保證不會出現 maxlongint的資料。資料可能回出現負數情況 2 2 1 1 16真的是超級麻煩emmmm,今天考試的時候看了看接著就棄了。說實話這個真不應該棄掉,但是...