こんにちは。表題の件で質問です。
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発で計算結果を取得したいです。
アドバイス宜しくお願いします。
C#.NET掲示板は,
http://madia.world.coocan.jp/cgi-bin/csbbs/wwwlng.cgi
ですよ。
とりあえず,IronPython使うとか,適当なクラスでっち上げてICodeCompilerに放り込むとか……。
YuOさんご指摘ありがとうございます。
C#専用の方へ移動します。失礼致しました。
ツイート | ![]() |