0

我有一个文本框,我想在其中读取用户输入的数学函数(例如:Math.Sqrt(x) 等)。

我用于控制台测试功能的代码是

    static double f(double x)
    {
        double f;
        f = Math.Sqrt(x);
        return f;
    }

我不确定如何修改它:我是否读取字符串中的文本框内容,并将该字符串作为第二个参数添加到 f 函数( static double f(double x, string s)? 我应该使用哪种类型的解析适用于字符串?

4

4 回答 4

5

几个公式解析器可供您使用。

基本上,您需要评估您的公式的某人/某事。

我在自己的项目中成功地使用了这个。它允许像这样调用它

var ev = 
    new Eval3.Evaluator(
        Eval3.eParserSyntax.c,/*caseSensitive*/ 
        false);

MessageBox.Show(ev.Parse("1+2+3").value.ToString());

建议使用C# 代码的动态编译,因为它将每个编译的代码添加到您的应用程序域(“应用程序域”)中,并且没有再次卸载它的选项。(如我错了请纠正我)。

于 2012-05-08T06:33:20.297 回答
1

另一位评估员:http ://csharp-eval.com/

于 2012-05-08T06:37:22.440 回答
0

如果您对如何从文本框中获取文本并使用该值执行某些操作感兴趣,则以下代码将为您执行此操作。如果你想在文本框中输入一个函数 - sqrt(40) 你应该检查这个项目: http: //www.codeproject.com/Articles/23061/MathParser-Math-Formula-Parser

http://msdn.microsoft.com/en-us/library/system.windows.forms.textbox.aspx

static double f(Textbox tb)
{
    double f;
    double x = Double.Parse(tb.Text);
    f = Math.Sqrt(x);
    return f;
}
于 2012-05-08T06:39:07.120 回答
0

您可以执行任意代码,但并不容易。对于一般代码,您必须创建一个包装类并将代码插入到函数中。

看看http://social.msdn.microsoft.com/forums/en-US/csharpgeneral/thread/6a783cc4-bb54-4fec-b504-f9b1ed786b54/

于 2012-05-08T06:39:21.927 回答