转: 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下编译通过。
/// <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# 字符串公式计算的更多相关文章
- [转]用Objective-C实现简单的数学字符串公式的计算
好友第一次用写技术分享,这么多年都没见他正经的写点东西.那天突然抬头问我,Objective-C有没字符串计算的.我说,没有.后来他默默实现了,特为他转发,表示支持. ================ ...
- C语言:根据以下公式计算s,s=1+1/(1+2)+1/(1+2+3)+...+1/(1+2+3+...+n) -在形参s所指字符串中寻找与参数c相同的字符,并在其后插入一个与之相同的字符,
//根据一下公式计算s,并将计算结果作为函数返回值,n通过形参传入.s=1+1/(1+2)+1/(1+2+3)+...+1/(1+2+3+...+n) #include <stdio.h> ...
- 用python实现计算1-2*((60-30+(-40/5)*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3)/(16-3*2))类似的公式计算
作业需求: 开发一个简单的python计算器 1.实现加减乘除及拓号优先级解析 2.用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 ...
- WPF实现强大的动态公式计算
数据库可以定义表不同列之间的计算公式,进行自动公式计算,但如何实现行上的动态公式计算呢?行由于可以动态扩展,在某些应用场景下将能很好的解决实际问题. 1.VS2012新建一个WPF应用程序WpfApp ...
- 使用Machin公式计算
使用Machin公式计算,并使用百亿进制+末项位数控制,这里可算出数万位(比最简PI快80倍),源代码约40行,在本网页中. 计算公式 PI=16arctg(1/5)-4arctg(1/239),其中 ...
- js字符串长度计算(一个汉字==两个字符)和字符串截取
js字符串长度计算(一个汉字==两个字符)和字符串截取 String.prototype.realLength = function() { return this.replace(/[^\x00-\ ...
- objective-c中字符串长度计算
我们知道,在c语言中,使用sizeof ()计算在内存中占用的字节数, 引用string.h后,使用strlen()计算字符串的长度(不包含\0). 而在object-c中, "length ...
- c语言详解 蔡勒(Zeller)公式计算某一天是星期几 极其方便
—— 蔡勒(Zeller)公式 ,小于等于14,即在蔡勒公式中,某年的1.2月要看作上一年的13.14月来计算,比如2003年1月1日要看作2002年的13月1日来计算):d:日:[ ]代表取整,即只 ...
- Windows API方式直接调用C#的DLL,支持多音字转拼音、Gzip解压缩、公式计算(VBA、C++、VB、Delphi甚至java都可以)
原始链接 https://www.cnblogs.com/Charltsing/p/DllExport.html 这两年,我在VBA应用方面一直有几大痛点:1.多音字转拼音:2.64位下的GZIP解压 ...
随机推荐
- Servlet多文件上传
各位大侠可能会对263电子邮箱中的"上传附件"功能有印象,就是:在浏览 器中点击"浏览",弹出一个对话框,选中文件后,单击"确定",文件就被 ...
- EXCEL导出工具类及调用
一.Excel导出工具类代码 package com.qiyuan.util; import java.io.OutputStream; import java.io.UnsupportedEncod ...
- Hive是什么
Hive是什么1)Hive 是建立在Hadoop (HDFS/MR)上的用于管理和查询结果化/非结构化的数据仓库:2)一种可以存储.查询和分析存储在Hadoop 中的大规模数据的机制:3)Hive 定 ...
- C 语言 static、extern与指针函数介绍
1.exit(0)正常退出程序 exit(1)程序异常时退出程序 2.static(静态变量)修饰局部变量 在局部变量使用static修饰,会延长局部变量的存在期.但我们需要注意一下几点: 虽然sta ...
- 远程桌面如何向远程的计算机发送ctrl+alt+del
远程桌面如何向远程的计算机发送ctrl+alt+del ? 可以使用 ctrl+alt+end 组合键代替 ctrl+alt+del 组合键
- 面向对象(static关键字的特点)
static关键字的特点 * a:随着类的加载而加载 * b:优先于对象存在 * c:被类的所有对象共享 * 举例:咱们班级的学生应该共用同一个班级编号. * 其实这个特点也是在告诉我们什么时候使用静 ...
- CRC算法
https://blog.csdn.net/dream_1996/article/details/73588269
- java 之DelayQueue实际运用示例
在学习Java 多线程并发开发过程中,了解到DelayQueue类的主要作用:是一个无界的BlockingQueue,用于放置实现了Delayed接口的对象,其中的对象只能在其到期时才能从队列中取走. ...
- Nib加载的方式实现自定义TableView
实现的效果 实现原理: 通过在主界面中用Bundle 的LoadNib的方式进行自定义窗体文件加载并渲染界面 实现步骤 Step One 创建TableViewCell 窗体 Step Two 定义接 ...
- Asp.net MVC 移除不用的视图引擎
Asp.net MVC 默认提供两个视图引擎,分别为: WebFormViewEngine 和 RazorViewEngine.MVC在查找视图时,会按照指定的顺序进行查找.当我们的MVC程序未找到相 ...