文字列の計算式の計算結果を取得するには?

解決


キー  2007-03-31 02:34:26  No: 64831

こんにちは。表題の件で質問です。
1+2/3*4
のような文字列を与えて、その計算結果を取得する方法を探しています。

開発環境はVS2005 C#ですが
VBでもVCでも或いはWindowsで動作する他言語、他環境でも構いません。

http://dobon.net/vb/dotnet/programing/eval.html
こちらのDobonさんの記事を参考にしてみたところ
四則演算のような単純なものは対応できました。以下、サンプルです。

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            //計算式
            string exp = "1/2*3/4";

            Microsoft.JScript.Vsa.VsaEngine ve = Microsoft.JScript.Vsa.VsaEngine.CreateEngine();
            double result = (double)Microsoft.JScript.Eval.JScriptEvaluate(exp, ve);
            Microsoft.JScript.MathObject.sqrt(2);

            //結果を表示
            Console.WriteLine(result);
        }
    }
}

しかし、もっと複雑な演算をしたい場合
例えば、√や二乗や三角関数?などなど
この方法の延長で対応させる解が見つかりませんでした。

http://www.katamari.jp/index.php?dev%2Fvb%2F%CA%B8%BB%FA%CE%F3%A4%CE%B7%D7%BB%BB%BC%B0%A4%CE%B7%D7%BB%BB
こちらを参考に逆ポーランド記法に直して
自力で演算することも考えましたが
できれば文字列から1発で計算結果を取得したいです。
アドバイス宜しくお願いします。


YuO  2007-03-31 03:41:56  No: 64832

C#.NET掲示板は,
http://madia.world.coocan.jp/cgi-bin/csbbs/wwwlng.cgi
ですよ。

とりあえず,IronPython使うとか,適当なクラスでっち上げてICodeCompilerに放り込むとか……。


キー  2007-03-31 16:36:21  No: 64833

YuOさんご指摘ありがとうございます。
C#専用の方へ移動します。失礼致しました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加