none
函数表达式的计算问题 RRS feed

  • 问题

  • 我有3个textbox,第一个用来输入自变量,第二个用来输入函数表达式,第三个用来输出计算结果,通过button来控制计算。
    我在第一个textbox中输入了2,在第2个textbox中输入了函数表达式:"Math.Pow(x,3)",因此,我在button的clickfcn里写:

    string expression = textBox2.Text.Replace("x", textBox1.Text);
    double result = Convert.ToDouble(new DataTable().Compute(expression, null));
    textBox3.text = result.Tostring();
    
    
    程序提示,Math.Pow()未定义函数调用的错误。如果不涉及c#的数学类,即用x*x*x来代替就可以正常运行,可是有的时候x的10次方或者100次方,总不能重复100次吧,或者设计到sin等,且不就用不了,请问大家,有没有什么方法,可以解决这里数学类的调用问题吗?

    2010年9月8日 3:19

答案

  • 你好:

    就我所知,默认的数据类方法应该可以满足你的需求,如果不行,请查看mathdotnet项目。

    http://www.mathdotnet.com/

    2010年9月9日 7:16
    版主
  • 上面的代码是想通过 C# 动态解析表达式并计算其值。此代码利用了 DataTable 的 Compute 方法来做简单实现。然而,DataTable.Compute() 并不能计算除标准 T-SQL 之外的其他运算,比如 Math.Pow()。Math.Pow() 是一个 C# 表达式,而不是 DataTable 能认识的 T-SQL 表达式。可以改用 POWER() 或者 SIN() 或者其他数据库通用的数值函数表达式。
    Mark Zhou
    2010年9月9日 7:34

全部回复

  • 你好:

    就我所知,默认的数据类方法应该可以满足你的需求,如果不行,请查看mathdotnet项目。

    http://www.mathdotnet.com/

    2010年9月9日 7:16
    版主
  • 上面的代码是想通过 C# 动态解析表达式并计算其值。此代码利用了 DataTable 的 Compute 方法来做简单实现。然而,DataTable.Compute() 并不能计算除标准 T-SQL 之外的其他运算,比如 Math.Pow()。Math.Pow() 是一个 C# 表达式,而不是 DataTable 能认识的 T-SQL 表达式。可以改用 POWER() 或者 SIN() 或者其他数据库通用的数值函数表达式。
    Mark Zhou
    2010年9月9日 7:34