0

重複の可能性:
.NET に文字列数学エバリュエーターはありますか?

数式パーサーを実装する必要があります。次の式を評価する必要があります。

  • 基本演算子(+,-,*,/,%[モジュロ演算子])
  • 2*(4-1) などの優先操作
  • sin,cos,tan,cotan, log(base,number)関数
  • sin(cos(log(2,32))) などの合成が可能
  • 2^5 などのべき乗演算

JScriptまず、 eval 関数を使いたかったこと。しかし、それは危険ではなく、電力オペレーターもいません。次に、インターネットでいくつかのライブラリを検索しました。しかし、結局のところ、私はそれらを使用できません。質問は次のとおりです。JScript eval 関数の呼び出しはどれくらい安全ですか?また、私のタスク用の標準の .net ツールはありますか? そうでない場合、どのアルゴリズムが最適ですか? 現在、式ツリーを構築し、それをコンパイルして結果を取得しようとしています。

4

2 に答える 2

1

NCalcを試すことができます

Dictionary<string, int> dict = new Dictionary<string, int>() {
    {"a",1} ,
    {"b",4}
};

NCalc.Expression exp = new NCalc.Expression("a + b / 2 * myfunc(3.14)");

exp.EvaluateFunction += (s, e) =>
    {
        var d = (double)e.Parameters[0].Evaluate();
        e.Result = Math.Cos(d);
    };

exp.EvaluateParameter += (s, e) =>
    {
        e.Result = dict[s];
    };

var result = exp.Evaluate();
于 2012-07-21T15:29:29.063 に答える
0

または jep.net - 免責事項: 私は著者です。

于 2012-07-25T05:35:08.403 に答える