社区
C#
帖子详情
计算公式问题
piaoyu581
2006-03-13 11:33:53
我现在有一个公式是字符串类型:“(2+3)/4-1”,我想求的计算结果
是不是一定要按运算符分解开转化成相应的类型,才可以啊?
有没有方便一点的办法啊?
...全文
301
9
打赏
收藏
计算公式问题
我现在有一个公式是字符串类型:“(2+3)/4-1”,我想求的计算结果 是不是一定要按运算符分解开转化成相应的类型,才可以啊? 有没有方便一点的办法啊?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
LixingTie
2006-03-13
打赏
举报
回复
吼吼~~~~~应各位要求,改了一下,下面是.Net framework 1.1版本的,感谢各位的支持!!
using System;
using System.CodeDom.Compiler;
using System.Reflection;
using System.Text;
using Microsoft.CSharp;
namespace Expression
{
/// <summary>
/// 计算表达式的类
/// </summary>
public class CalculateExpression
{
/// <summary>
/// 接受一个string类型的表达式并计算结果,返回一个object对象,静态方法
/// </summary>
/// <param name="expression"></param>
/// <returns></returns>
public static object Calculate(string expression)
{
string className = "Calc";
string methodName = "Run";
expression = expression.Replace("/", "*1.0/");
// 创建编译器实例。
ICodeCompiler complier = (new CSharpCodeProvider().CreateCompiler());
// 设置编译参数。
CompilerParameters paras = new CompilerParameters();
paras.GenerateExecutable = false;
paras.GenerateInMemory = true;
// 创建动态代码。
StringBuilder classSource = new StringBuilder();
classSource.Append("public class " + className + "\n");
classSource.Append("{\n");
classSource.Append(" public object " + methodName + "()\n");
classSource.Append(" {\n");
classSource.Append(" return " + expression + ";\n");
classSource.Append(" }\n");
classSource.Append("}");
// 编译代码。
CompilerResults result = complier.CompileAssemblyFromSource(paras, classSource.ToString());
// 获取编译后的程序集。
Assembly assembly = result.CompiledAssembly;
// 动态调用方法。
object eval = assembly.CreateInstance(className);
MethodInfo method = eval.GetType().GetMethod(methodName);
object reobj = method.Invoke(eval, null);
GC.Collect();
return reobj;
}
}
}
本人QQ 260031207 欢迎来交流!!
Montaque
2006-03-13
打赏
举报
回复
http://montaque.cnblogs.com/archive/2005/12/28/306407.html
piaoyu581
2006-03-13
打赏
举报
回复
汗。。。1.1框架CodeDomProvider好象不包含对CompileAssemblyFromSource的定义哦
piaoyu581
2006-03-13
打赏
举报
回复
谢二楼的了~~不过我的项目是VS2003的~~~
先试下再说~
LixingTie
2006-03-13
打赏
举报
回复
顺便说一句,这个类的代码是C#2.0环境下的,用VS2003运行可能会报错,建议用VS2005
LixingTie
2006-03-13
打赏
举报
回复
该类的Calculate方法接收一个string字符串,通过编译器编译计算出结果,返回一个object值。楼主的问题只要调用该类的Calculate方法把字符串传进去就可以了。
string str = "(2+3)/4-1";
double result;
result = (double) Expression.CalculateExpression.Calcualte(str);
该类也可以计算其它类型的表达式。例如调用方法传进字符串"3>2",则返回true;
hyena041
2006-03-13
打赏
举报
回复
赞一下,2楼的东西,收藏了
呵呵
LixingTie
2006-03-13
打赏
举报
回复
本人收集了一个类,是用来计算字符串格式的表达式的。
using System;
using System.CodeDom.Compiler;
using System.Reflection;
using System.Text;
using Microsoft.CSharp;
namespace Expression
{
/// <summary>
/// 计算表达式的类
/// </summary>
public class CalculateExpression
{
/// <summary>
/// 接受一个string类型的表达式并计算结果,返回一个object对象,静态方法
/// </summary>
/// <param name="expression"></param>
/// <returns></returns>
public static object Calculate(string expression)
{
string className = "Calc";
string methodName = "Run";
expression = expression.Replace("/", "*1.0/");
// 创建编译器实例。
CodeDomProvider complier = (new Microsoft.CSharp.CSharpCodeProvider());
// 设置编译参数。
CompilerParameters paras = new CompilerParameters();
paras.GenerateExecutable = false;
paras.GenerateInMemory = true;
// 创建动态代码。
StringBuilder classSource = new StringBuilder();
classSource.Append("public class " + className + "\n");
classSource.Append("{\n");
classSource.Append(" public object " + methodName + "()\n");
classSource.Append(" {\n");
classSource.Append(" return " + expression + ";\n");
classSource.Append(" }\n");
classSource.Append("}");
// 编译代码。
CompilerResults result = complier.CompileAssemblyFromSource(paras, classSource.ToString());
// 获取编译后的程序集。
Assembly assembly = result.CompiledAssembly;
// 动态调用方法。
object eval = assembly.CreateInstance(className);
MethodInfo method = eval.GetType().GetMethod(methodName);
object reobj = method.Invoke(eval, null);
GC.Collect();
return reobj;
}
}
}
piaoyu581
2006-03-13
打赏
举报
回复
谢楼上的了~~~看来偶这方面的知识要好好补补了~~~
结帐
卷积层
计算公式
和 池化层
计算公式
及简单示例与常见
问题
解析 全网最详细
通过这些简单公式,可以迅速计算出卷积层和池化层的输出维度及参数数量。这对设计卷积神经网络和理解其内部结构至关重要,也有助于对模型进行调试、优化和部署。Tip: 由于官方实现里通常会在计算卷积/池化输出时使用Floor运算(向下取整),所以在实际编程或搭建网络的过程中,要格外留意输入大小和步幅、填充之间的匹配关系,才能得到期望的输出尺寸。END以上就是卷积层和池化层的核心
计算公式
及简单示例。如果你对卷积神经网络有更多
问题
,欢迎进一步提问或留言讨论!
EPPlus项目中使用ExcelTable时
计算公式
异常
问题
解析
EPPlus项目中使用ExcelTable时
计算公式
异常
问题
解析
问题
背景 在使用EPPlus库处理Excel表格时,开发人员经常遇到表格
计算公式
异常的
问题
。特别是当通过LoadFromDataTable方法加载数据到ExcelTable后,或者在修改表格列名后,原本正常的
计算公式
会出现错误。本文将从技术角度深入分析这一
问题
的成因,并提供解决方案。
问题
现象 开发人员在使用EPPlus 7.4.2...
同步带周长
计算公式
_同步带的长度计算和常见
问题
同步带的长度
计算公式
如下:lb =((df + dm) 1.5708 ) + (2 lfm)其中lb是同步带的长度,df是大同步带轮的直径,dm是小同步带轮的直径,lfm是大同步带轮的中心和小同步带轮中心的距离。从上述同步带长度的
计算公式
可以看出同步带轮的直径对于同步带的长度有一定的影响。而同步带轮的直径和同步带轮的型号还有尺寸有关。所以同步带轮的型号会对同步带的长度有一定的影响。同步带的常见
问题
...
在URP中的BRDF
计算公式
问题
1)在URP中的BRDF
计算公式
问题
2)Job System占用主线程时间
问题
3)在Profiler中定位TempBuffer
问题
4)Unity 2019使用HDRP的摄像机的GL画线
问题
5)Unity WebCamTexture获取到的相机图片被旋转 这是第248篇UWA技术知识分享的推送。今天我们继续为大家精选了若干和开发、优化相关的
问题
,建议阅读时间10分钟,认真读完必有收获。 UWA 问答社区:answer.uwa4d.com UWA QQ群2:793972859(原群已满员) Sh
关于 贝叶斯
计算公式
的一个
问题
关于 贝叶斯
计算公式
的一个
问题
网络上流传的关于反垃圾邮件的贝叶斯算法大都和这篇类似。 但是里面的公式和作者举的例子却有冲突的地方: 公式如下: A事件----邮件为垃圾邮件; t1,t2 …….tn代表TOKEN串 则P(A|ti)表示在邮件中出现TOKEN串ti时,该邮件为垃圾邮件的概率。 设 P1(ti)=(ti在hash
C#
111,129
社区成员
642,532
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章