C#中字符串转换为计算公式(自定义公式的计算)
第一种解决方案
第一种也是功能最强大的一种,可以使用Eval函数,像在Java中一样强大,几乎所有的运算符都可以实现,包括四则运算,与或非等。
添加COM引用:

private void button2_Click(object sender, EventArgs e)
{
MSScriptControl.ScriptControl sc = new MSScriptControl.ScriptControlClass();
sc.Language = "JavaScript";
MessageBox.Show(sc.Eval("((2*3)-5+(3*4))+6/2").ToString());//1+12+3
}
在引用COM组件的时候,出现了无法嵌入互操作类型“……”,请改用适用的接口的错误提示。查阅资料,找到解决方案,记录如下:
选中项目中引入的dll,鼠标右键,选择属性,把“嵌入互操作类型”设置为False。
第贰种解决方案
简单的四则运算或判断可以使用DataTable.Compute来实现。
DataTable dt = new DataTable();
MessageBox.Show(dt.Compute("1*2+3", "false").ToString());
//替换公式
string formula = "K*(F0+Fi)";
double K = 0.0D, F0 = 3.0F, Fi = 10.0F;
formula = formula.Replace("K", "{0}");
formula = formula.Replace("F0", "{1}");
formula = formula.Replace("Fi", "{2}");
formula = string.Format(formula, K, F0, Fi);
DataTable dt = new DataTable();
string really_data = dt.Compute(formula, "false").ToString();
第叁种解决方案
第三种比较耗费性能,局限性较大,就是在用SQL语句来实现。SQL中的select语句也可以实现计算。
string strConn = "Data Source=127.0.0.1;Initial Catalog=CementCartDB;Persist Security Info=True;User ID=sa;Password=123456"
conn = new SqlConnection(strConn);
conn.Open();
cmd = conn.CreateCommand();
string biaodashi = "1&1";
cmd.CommandText = "select "+biaodashi;
string o = cmd.ExecuteScalar().ToString();
MessageBox.Show(o);
以上是我总结的字符串转换为运算符的几种方式。自己备份的同时希望对大家也有所帮助。
评论给出的其他办法:文中的三种方法均不太好,还有一种更好的方法,可参考: https://pzy.io/archives/2019/10/calculating-string-formula.html
C#中字符串转换为计算公式(自定义公式的计算)的更多相关文章
- C#中 字符串转换为计算公式,并计算结果
根据总结,大概分为以下三种: 第一种: 用DataTable中的Compute方法. 例如:" 1*2*3 " 代码如下: var a = new System.Data.Dat ...
- C#中 字符串转换为计算公式
//方法一 利用DataTable中的Compute方法 例如:1*2-(4/1)+2*4=6 string formulate = string.Format("{0}*{1} - {2} ...
- C#中字符串转换为计算公式
添加COM引用: private void button_Click(object sender, EventArgs e) { MSScriptControl.ScriptControl sc = ...
- SQL SERVER 将表中字符串转换为数字的函数 (详询请加qq:2085920154)
在SQL SERVER 2005中,将表中字符串转换为数字的函数共2个:1. convert(int,字段名) 例如:select convert(int,'3')2. cast(字段名 as i ...
- js中字符串转换为数值的两种方法的区别
在js中字符串转换为数值的方法有三种:转换函数,强制类型转换,隐式转换 1.转换函数 parseInt() //将字符串转换为整型 parseFloat() //将字符串转换为浮点型 转换函数在 ...
- Python中 字符串 转换为 字典
需求:把以下字符串转换为字典 #字符串 testStr = '{ "pName": "Ceshi", "gender": 1, " ...
- js中字符串转换为日期型
简介:字符串转日期型函数 传入一个字符串格式的日期,如何转换为日期型的.以下为转换方案. //字符串转换为日期函数,返回日期型(传入的日期格式2014-04-22) function StringTo ...
- C#中另类自定义公式计算 字符串转换为计算公式,并得出计算结果
[csharp] view plain copy print? //方法一 利用DataTable中的Compute方法 例如:1*2-(4/1)+2*4=6 , , , ); DataTable d ...
- js中字符串转换为日期和比较大小
本文转载于:http://yun342173024.iteye.com/blog/1873756在做前端校验的时候,要做日期比较的校验,在js中把字符串转化为日期,一时之间还真不知道在js中怎么把一个 ...
随机推荐
- 更新ruby:Error running 'requirements_osx_brew_update_system ruby-2.4.1报错解决
更新ruby时,报错: Failed to update Homebrew, follow instructions here: https://github.com/Homebrew/homebre ...
- TurboCAD Pro for Mac(二维绘图和三维建模工具)破解版安装
1.软件简介 TurboCAD Pro 是 macOS 系统上一款二维绘图和三维建模工具,具备强大的绘图和设计特性,加上强大的创建复杂的三维模型的工具,三维 OpenGL 的渲染,和超过 11, ...
- 使用RStudio远程连接MySQL
环境: 远程机: linux + Mysql 本地机: Windows + RStudio 问题: 1. 远程机为内网机器,需要跳板机连接,没有公网ip,无法连接 解决方案:修改跳板机的iptable ...
- logback配置详解
本文转自:https://segmentfault.com/a/1190000008315137 概览 简单地说,Logback 是一个 Java 领域的日志框架.它被认为是 Log4J 的继承人.L ...
- JAVA 线程池架构浅析
经历了Java内存模型.JUC基础之AQS.CAS.Lock.并发工具类.并发容器.阻塞队列.atomic类后,我们开始JUC的最后一部分:线程池.在这个部分你将了解到下面几个部分: 线程池的基础架构 ...
- linux每日命令(38):iostat命令
Linux系统中的 iostat是I/O statistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视.它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况.同 ...
- 【Java】forward & redirect 的差异
1.从地址栏显示来说 forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地 ...
- Android Launcher分析和修改7——AllApp全部应用列表(AppsCustomizeTabHost)
今天主要是分析一下Launcher里面的所有应用列表.Android4.0 Launcher的所有应用列表跟2.X比较大的区别就是多了Widget的显示.下面会详细分析Launcher里面有关所有应用 ...
- cad巧用插件自定义填充图形
很多同志如果遇到奇葩的填充图案,怎么办,找不到合适的,自己辛苦画了一遍,想把它作为自己的自定义的图案,怎么办呢. 今天老王给你您介绍个好用的插件. 首先在命令行输入命令 ap 弹出加载对话框 打开窗 ...
- 基于AC有限状态机的多模匹配算法
参考链接:http://www.cnblogs.com/zzqcn/p/3525636.html 感谢原文作者. 花了两天半时间实现并测试了算法. 按照上文的思路实现了一遍,可能是原文中有些地方描述的 ...