簡體   English   中英

在javascript中解算算術字符串?

[英]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)); 

對於sincosexp等特殊函數,使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM