[英]Solve an arithmetic string in javascript?
假設我有以下代碼:
var str = "4*(3)^2/1"
最簡單的解決方案是制作運算符堆棧並使用后綴表示法解決? 或者是否有一個我缺少的真正基本的解決方案。
另外,如果我使用log,ln,sin,cos和tan,我該如何適應?
很抱歉回答我自己的問題,但最簡單的解決方案是使用math.js
var ans = math.eval(str);
最簡單但有點危險,因此您可能必須在評估之前驗證(清理)表達式使用eval(對於exponent-operator ^
,將其替換為JavaScript中的exponent-operator **
):
var str="4*(3)^2/1".replace(/\\^/g,'**'); console.log(eval(str));
對於sin
, cos
, exp
等特殊函數,使用JavaScript中相應的預定義函數創建自己的函數:
var str="4*(3)^2/1+(exp(5)*cos(14)^(1/sin(13)))^2".replace(/\\^/g,'**'); function sin(x) { return Math.sin(x) } function cos(x) { return Math.cos(x) } // so on function exp(x) { return Math.exp(x) } console.log(eval(str));
您不需要postfix
表示法。 您可以使用eval
方法。
var str = "4*(3)^2/1"; console.log(str); console.log(eval(str));
另外,另一種解決方案是使用javascript-expression-evaluator ,它允許你做以下的事情:
Parser.evaluate("2 ^ x", { x: 4 });
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.