C#中另类自定义公式计算 字符串转换为计算公式,并得出计算结果
【转载】http://blog.csdn.net/smartsmile2012/article/details/8214989
C#中另类自定义公式计算 字符串转换为计算公式,并得出计算结果
- //方法一 利用DataTable中的Compute方法 例如:1*2-(4/1)+2*4=6
- string formulate = string.Format("{0}*{1} - {2}/{3} +{1}*{2}", 1, 2, 4, 1);
- DataTable dt = new DataTable();
- Response.Write(dt.Compute(formulate, "").ToString());
- Response.Write("<br/>");
- //方法二 利用JS中强大的Eval函数 可以带if-else判断 添加COM引用:Microsoft Sctipt Control 1.0
- MSScriptControl.ScriptControl sc = new MSScriptControl.ScriptControlClass();
- sc.Language = "JavaScript";
- string formulate1 = string.Format("if({0}==2)((({0}*{1})-{3}+({1}*{2}))+{4}/{0});else(1+2*3)", 2, 3, 4, 5,6);
- object objResult = sc.Eval(formulate1);
- if (objResult != null)
- {
- Response.Write(objResult.ToString());//1+12+3
- }
//方法一 利用DataTable中的Compute方法 例如:1*2-(4/1)+2*4=6 string formulate = string.Format("{0}*{1} - {2}/{3} +{1}*{2}", 1, 2, 4, 1); DataTable dt = new DataTable(); Response.Write(dt.Compute(formulate, "").ToString()); Response.Write("<br/>"); //方法二 利用JS中强大的Eval函数 可以带if-else判断 添加COM引用:Microsoft Sctipt Control 1.0 MSScriptControl.ScriptControl sc = new MSScriptControl.ScriptControlClass(); sc.Language = "JavaScript"; string formulate1 = string.Format("if({0}==2)((({0}*{1})-{3}+({1}*{2}))+{4}/{0});else(1+2*3)", 2, 3, 4, 5,6); object objResult = sc.Eval(formulate1); if (objResult != null) { Response.Write(objResult.ToString());//1+12+3 }
- /* 方法三 需将Microsoft.JScript 和Microsoft.Vsa加入参考并引用Microsoft.JScript */
- public object EvalExpress(string sExpression)
- {
- Microsoft.JScript.Vsa.VsaEngine ve = Microsoft.JScript.Vsa.VsaEngine.CreateEngine();
- return Microsoft.JScript.Eval.JScriptEvaluate(sExpression, ve);
- }
【推荐】2025 HarmonyOS 鸿蒙创新赛正式启动,百万大奖等你挑战
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】开源 Linux 服务器运维管理面板 1Panel V2 版本正式发布
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 独立开发,这条路可行吗?
· 我在厂里搞 wine 的日子
· 如何通过向量化技术比较两段文本是否相似?
· 35+程序员的转型之路:经济寒冬中的希望与策略
· JavaScript中如何遍历对象?
· 独立开发,这条路可行吗?
· C#源生成器:让你的代码飞起来的黑科技
· Java简历、面试、试用期、转正
· Java开发AI项目,太爽了!LangChain4j保姆级教程
· 极大提高项目部署的生产力!分享一个半自动化的CICD实现方案