第一种解决方案

第一种也是功能最强大的一种,可以使用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#中字符串转换为计算公式(自定义公式的计算)的更多相关文章

  1. C#中 字符串转换为计算公式,并计算结果

     根据总结,大概分为以下三种: 第一种: 用DataTable中的Compute方法. 例如:" 1*2*3 " 代码如下: var a = new System.Data.Dat ...

  2. C#中 字符串转换为计算公式

    //方法一 利用DataTable中的Compute方法 例如:1*2-(4/1)+2*4=6 string formulate = string.Format("{0}*{1} - {2} ...

  3. C#中字符串转换为计算公式

    添加COM引用: private void button_Click(object sender, EventArgs e) { MSScriptControl.ScriptControl sc = ...

  4. SQL SERVER 将表中字符串转换为数字的函数 (详询请加qq:2085920154)

    在SQL SERVER 2005中,将表中字符串转换为数字的函数共2个:1. convert(int,字段名)   例如:select convert(int,'3')2. cast(字段名 as i ...

  5. js中字符串转换为数值的两种方法的区别

    在js中字符串转换为数值的方法有三种:转换函数,强制类型转换,隐式转换 1.转换函数 parseInt()   //将字符串转换为整型 parseFloat()  //将字符串转换为浮点型 转换函数在 ...

  6. Python中 字符串 转换为 字典

    需求:把以下字符串转换为字典 #字符串 testStr = '{ "pName": "Ceshi", "gender": 1, " ...

  7. js中字符串转换为日期型

    简介:字符串转日期型函数 传入一个字符串格式的日期,如何转换为日期型的.以下为转换方案. //字符串转换为日期函数,返回日期型(传入的日期格式2014-04-22) function StringTo ...

  8. C#中另类自定义公式计算 字符串转换为计算公式,并得出计算结果

    [csharp] view plain copy print? //方法一 利用DataTable中的Compute方法 例如:1*2-(4/1)+2*4=6 , , , ); DataTable d ...

  9. js中字符串转换为日期和比较大小

    本文转载于:http://yun342173024.iteye.com/blog/1873756在做前端校验的时候,要做日期比较的校验,在js中把字符串转化为日期,一时之间还真不知道在js中怎么把一个 ...

随机推荐

  1. 1.5.3 GROUP BY子句

    1.5.3 GROUP BY子句正在更新内容.请稍后

  2. 迁移ORACLE_HOME引发的登录sqlplus无法加载类库错误

    在10g以后,一般情况下环境变量中没有必要设置LD_LIBRARY_PATH,但是一旦将ORACLE_HOME迁移到其他目录,则环境变量中还需要添加这个变量. Linux和Unix支持TAR方式迁移O ...

  3. Easyui datagrid 特殊处理,记录笔记

    1. 特殊的单元格样式 columns中 { field: , styler: function (value, row, index) { ') { return 'background-color ...

  4. 12.翻译系列:EF 6 中配置一对多的关系【EF 6 Code-First系列】

    原文链接:https://www.entityframeworktutorial.net/code-first/configure-one-to-many-relationship-in-code-f ...

  5. [转]Java 反射在实际开发中的应用

    一:Java类加载和初始化 1.1 类加载器(类加载的工具) 1.2 Java使用一个类所需的准备工作 二:Java中RTTI 2.1 :为什么要用到运行时类型信息(就是RTTI) 2.2  :RTT ...

  6. ab压力测试工具的简单使用

    ab是一种用于测试Apache超文本传输协议(HTTP)服务器的工具.apache自带ab工具,可以测试 apache.IIs.tomcat.nginx等服务器 但是ab没有Jmeter.Loadru ...

  7. rocketmq 源码

    https://github.com/YunaiV/incubator-rocketmq

  8. tensorflow 笔记10:tf.nn.sparse_softmax_cross_entropy_with_logits 函数

    函数:tf.nn.sparse_softmax_cross_entropy_with_logits(_sentinel=None,labels=None,logits=None,name=None) ...

  9. [转]ztree出现$.fn.zTree is undefined错误的解决办法。

    原文地址:https://blog.csdn.net/smallboy2011/article/details/20554269 问题描述,在一个界面使用ztree创建树,提示TypeError: $ ...

  10. 【GMT43智能液晶模块】例程三:CAN通信实验

    实验原理: STM32F429自带有CAN通信接口,本例程通过CAN1与芯片SN65HVD230相连 实现CAN通信,通过回环测试以验证CAN通信功能. 实验现象: 源代码下载链接: 链接:http: ...