假设:
a b c d四个数
由用户在文本框中输入公式,并计算出结果。
涉及到的计算有+ - * / (),
例:
文本框内的内容如下(a*b+c)*c+(d-c)*b+5要如何对公式进行分析,并识别出不正确的公式,
比如输入了非法的字符,或某个数除以了0等等。

解决方案 »

  1.   

    把它做为一个Sql语句去执行就可以了:)
      

  2.   

    javascript里可用eval("a+b+c")实现。
      

  3.   

    这样:
    using System;
    using System.Xml;
    using System.Xml.XPath;
    using System.Text;namespace Wuyh
    {
    /// <summary>
    /// 简单转换类
    /// 计算字符表达式
    /// </summary>
    public class Converts
    {        
            /// <summary>
            /// 计算字串表达式的值
            /// </summary>
            /// <param name="p_str">字符表达式如:1+2+3</param>
            /// <returns></returns>
            private Converts()
            {
            }
           
            public static double Evaluate(string p_str)
            {
                double rtnValue=0;
                XmlDocument doc = new XmlDocument();
                XPathNavigator nav=doc.CreateNavigator();
                try
                {
                    rtnValue=Convert.ToDouble(nav.Evaluate(p_str));
                }
                catch
                {
                    rtnValue=0;
                }
                return rtnValue;
            }
      }
    }
      

  4.   

    /// <summary>
    /// 计算一个表达式的结果
    /// </summary>
    /// <param name="expression">表达式</param>
    /// <returns></returns>
    public static object Eval(string expression)
    {
    System.Data.DataTable table = new System.Data.DataTable();
    System.Data.DataColumn Col = new System.Data.DataColumn("col1", typeof(string), expression);
    table.Columns.Add(Col);table.Rows.Add(new object[] { "" });
    return table.Rows[0][0];
    }