首页 > 其他 > 详细

转: c# 字符串公式计算

时间:2014-03-20 15:19:27      阅读:637      评论:0      收藏:0      [点我收藏+]

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下编译通过。


bubuko.com,布布扣

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# 字符串公式计算,布布扣,bubuko.com

转: c# 字符串公式计算

原文:http://www.cnblogs.com/jearay/p/3613584.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!