转 C# 自动计算字符串公式的值(三种方式)

C# 自动计算字符串公式的值(三种方式)

从网络上找到这段源码,重新整理后测试通过.

有三种方式可自动计算字符串公式的值:
1. 最简单的方式,由SQL语句计算
2. 使用Microsoft.Javascript计算
3. 使用后序表达式计算(数据结构)

原文内容:

在编程应用程序过程中,有时需要字符串表达式的值。
如字符串:"23+56/(102-100)*((36-24)/(8-6))",计算结果=191。

根据数据结构栈的应用介绍,通过把表达式由中序式转换成后序式,再用栈来进行计算。
如上述字符串表达式:"23+56/(102-100)*((36-24)/(8-6))",
转换为后序时为:"23|56|102|100|-|/|*|36|24|-|8|6|-|/|*|+"(其中字符"|"为分隔符)。

本程序代码如下:在VS2008 +winXP下编译通过。


C# Code:


/// <summary>  
/// C#自动计算字符串公式的值  
/// </summary>  
public   class  CalcStringExpression
{
    /// <summary>  
    /// 最简单的方式由SQL计算  
    /// </summary>  
    /// <param name="expression">表达式</param>  
    /// <returns></returns>  
    public   static   float  CalcBySQL( string  expression)
   {
       string  SQL = "SELECT " expression " AS RESULT_VALUE";
      SqlConnection conn =   new  SqlConnection("自己定义连接字符串");
      SqlCommand cmd =   new  SqlCommand(SQL, conn);
       object  o = cmd.ExecuteScalar();   //执行SQL.  
       return   float.Parse(o.ToString());
   }
   
    /// <summary>  
    /// 由Microsoft.Eval对象计算表达式,需要引用Microsoft.JScript和Microsoft.Vsa名字空间。  
    /// </summary>  
    /// <param name="expression">表达式</param>  
    /// <returns></returns>  
    public   static   float  CalcByJs( string  expression)
   {
      Microsoft.JScript.Vsa.VsaEngine ve = Microsoft.JScript.Vsa.VsaEngine.CreateEngine();
       object  returnValue = Microsoft.JScript.Eval.JScriptEvaluate(( object)expression, ve);
       return   float.Parse(returnValue.ToString());
   }
   
    /// <summary>  
    /// 由中序式转换成后序式,再用栈来进行计算  
    /// </summary>  
    /// <param name="expression">表达式</param>  
    /// <returns></returns>  
    public   static   float  CalcByCalcParenthesesExpression( string  expression)
   {
       string  result =   new  CalcParenthesesExpression().CalculateParenthesesExpression(expression);
       return   float.Parse(result);
   }
   
}

//来源:C/S框架网(www.csframework.com) QQ:1980854898

原文:http://hi.baidu.com/miaomiaoxiong/blog/item/26481a0cdc051b216159f36b.html

源码下载:

点击下载附件   点击下载附件   (如下载失败,请邮件通知我们寄回给您,或QQ:23404761留言.)

转载于:https://www.cnblogs.com/xchangli/archive/2013/05/22/3092399.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值