社区
C#
帖子详情
计算公式问题
piaoyu581
2006-03-13 11:33:53
我现在有一个公式是字符串类型:“(2+3)/4-1”,我想求的计算结果
是不是一定要按运算符分解开转化成相应的类型,才可以啊?
有没有方便一点的办法啊?
...全文
264
9
打赏
收藏
计算公式问题
我现在有一个公式是字符串类型:“(2+3)/4-1”,我想求的计算结果 是不是一定要按运算符分解开转化成相应的类型,才可以啊? 有没有方便一点的办法啊?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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
打赏
举报
回复
谢楼上的了~~~看来偶这方面的知识要好好补补了~~~
结帐
NPOI导出Excel自动
计算公式
问题
以前用过sheet.ForceFormulaRecalculation = true;当时能够自动计算出来。 今天把模板改了一下(没动公式,但是模板是老板改的,我也不知道他操作了什么),结果就不能自动计算了。 最后没办法,只能给每个有公式的单元格处理一下,例如在我的项目里面就是这样的: int[] indexs = new int[] { 5, 7, 9, 13, 15, 17...
有功功率
计算公式
和无功功率
计算公式
无功功率(reactive power)在具有电感和的电路里,这些储能元件在半周期的时间里把能量变成磁场(或电场)的能量存起来,在另半周期的时间里对已存的磁场(或电场)能量送还给电源。它们只是与电源进行能量交换,并没有真正消耗能量。我们把与电源交换能量的速率的振幅值叫做无功功率。用字母q表示 单位为乏。 无功功率
计算公式
无功功率=i*u*sinφ,单位为乏或千乏. 有功功率
计算公式
有功功率p=iucosφ 其实有功功率p、无功功率q、视在功率s就是一直角三角形的三条变:s为斜边,p、q为两直角
最小样本量
计算公式
在这个公式中,n代表每组所需的样本量,对于A/B测试等至少包含两组的实验,总样本量将是2n。Δ为两组数值的差异,如点击率的提升幅度;最小样本量
计算公式
通常涉及多个参数,包括置信水平、总体比例的估计值、误差限以及总体规模等,这些参数共同决定了所需样本量的大小。综上所述,最小样本量
计算公式
是统计学中一个重要的工具,它能够帮助研究者确定进行实验或调查所需的最小样本量。此外,还有其他形式的样本量
计算公式
,如普通抽样调查、整群抽样调查、分层抽样调查和精确度抽样等,每种公式都有其特定的应用场景和参数设置。
4. sinx
计算公式
【
问题
描述】 已知sinx的近似
计算公式
如下: sin x = x - x3/3! + x5/5! - x7/7! + … + (-1)n-1x2n-1/(2n-1)! 其中x为弧度,n为正整数。编写程序根据用户输入的x和n的值,利用上述近似
计算公式
计算sinx的近似值,要求输出结果小数点后保留8位。 【输入形式】 从控制台输入小数x(0<=x<=20)和整数n(1<=n<=5000),两数中间用空格分隔。 【输出形式】 控制台输出公式结果:小数点后保留8位。 【样例输入1】 0.5
word计算机公式怎么算,word怎么实现自动
计算公式
WORD中能否自动计算,怎么实现Word自动求和?在word中自动求和步骤如下:1、打开一个需要进行数据计算的表格,如下图中,我们 已知五个学生的语文、数学、外语成绩,我们要通过公式完成总分和平均分的计算;2、把光标移动到要求总分的单元格,点击菜单栏的“表格”菜单,执行菜单中的“公式”命令。打开“公式”对话框;3、在打开的“公式”对话框中, 公式中会默认识别我们要计算的数据,一般会识别成求和,如下...
C#
111,111
社区成员
642,556
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章