1. using System;
  2. using System.Collections.Generic;
  3. using System.Web;
  4. using System.CodeDom.Compiler;
  5. using System.Reflection;
  6.  
  7. namespace WebApplication1
  8. {
  9. /// <summary>
  10. /// 动态求值
  11. /// </summary>
  12. public class FormulaCalculator
  13. {
  14. /// <summary>
  15. /// 计算结果,如果表达式出错则抛出异常
  16. /// </summary>
  17. /// <param name="statement">表达式,如"1+2+3+4"</param>
  18. /// <returns>结果</returns>
  19. public static object Eval(string statement)
  20. {
  21. return _evaluatorType.InvokeMember(
  22. "Eval",
  23. BindingFlags.InvokeMethod,
  24. null,
  25. _evaluator,
  26. new object[] { statement }
  27. );
  28. }
  29.  
  30. static FormulaCalculator()
  31. {
  32. //构造JScript的编译驱动代码
  33. CodeDomProvider provider = CodeDomProvider.CreateProvider("JScript");
  34.  
  35. CompilerParameters parameters;
  36. parameters = new CompilerParameters();
  37. parameters.GenerateInMemory = true;
  38.  
  39. CompilerResults results;
  40. results = provider.CompileAssemblyFromSource(parameters, _jscriptSource);
  41.  
  42. Assembly assembly = results.CompiledAssembly;
  43. _evaluatorType = assembly.GetType("Evaluator");
  44.  
  45. _evaluator = Activator.CreateInstance(_evaluatorType);
  46. }
  47.  
  48. private static object _evaluator = null;
  49. private static Type _evaluatorType = null;
  50.  
  51. /// <summary>
  52. /// JScript代码
  53. /// </summary>
  54. private static readonly string _jscriptSource =
  55. @"class Evaluator
  56. {
  57. public function Eval(expr : String) : String
  58. {
  59. return eval(expr);
  60. }
  61. }";
  62. }
  63. }

调用方法:string a = FormulaCalculator.Eval("(2000+100)*0.53*16.14+500").ToString();

asp.net字符串的数学表达式计算结果的更多相关文章

  1. [Swift通天遁地]五、高级扩展-(14)扩展String快速计算字符串中的各种数学表达式

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  2. java字符串类型数学运算表达式以及精度丢失问题

    字符串类型数学运算精度丢失问题 方式一:ScriptEngine 会精度丢失,可执行连续双括号 方式二:hutool ScriptUtil 会精度丢失,可执行连续双括号 方式三:hutool Scri ...

  3. PHP 实现字符串表达式计算

    什么是字符串表达式?即,将我们常见的表达式文本写到了字符串中,如:"$age >= 20",$age 的值是动态的整型变量. 什么是字符串表达式计算?即,我们需要一段程序来执 ...

  4. Python-sympy科学计算与数据处理(数学表达式)

    数学表达式 from sympy import * 1/2+1/3 S(1)/2+1/S(3) Out[4]: 5/6 Rational(5,10) Out[5]: 1/2 x,y = symbols ...

  5. .NET平台开源项目速览(8)Expression Evaluator表达式计算组件使用

    在文章:这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑)中,给大家初步介绍了一下Expression Evaluator验证组件.那里只是概述了一下,并没有对其使用和强大功能做 ...

  6. Qt计算器开发(二):信号槽实现数学表达式合法性检查

    表达式的合法性 由于我们的计算器不是单步计算的,所以我们能够一次性输入一个长表达式.然而假设用户输入的长表达式不合法的话,那么就会引发灾难.所以有必要对于用户的输入做一个限制. 一些限制举例: 比方, ...

  7. 基于语法分析器GOLD Parser开发的数学表达式计算器

    最近发现一款文法分析神器,看完官网(http://goldparser.org/)的介绍后感觉很犀利的样子,于是就拿来测试了一番,写了一个数学表达式分析的小程序,支持的数学运算符如下所示:常规运算:+ ...

  8. java面向对象课程设计-数学表达式计算器

    项目简介 设计一个计算器,其能够: 1)由用户输入一个简单的四则运算表达式,求出其计算结果后显示. 2)特殊数学函数,如:绝对值.取整.三角函数.倒数.平方根.平方.立方等. 3)对一定范围内的数字将 ...

  9. java实现一个简单的数学表达式分析器(加减乘除和括号)

    1.使用此分析器需要输入两个量: String str1=运算符号有前后有空格的数学表达式(如 1 + 2 *  ( 3+1)  - 5 #),并在最后添加‘#’字符作为结束标志: String st ...

随机推荐

  1. POJ 3691 (AC自动机+状态压缩DP)

    题目链接:  http://poj.org/problem?id=3691 题目大意:给定N个致病DNA片段以及一个最终DNA片段.问最终DNA片段最少修改多少个字符,使得不包含任一致病DNA. 解题 ...

  2. requirejs模块化框架用法分享

      我采用的是一个非常流行的库require.js. 一.为什么要用require.js? 最早的时候,所有Javascript代码都写在一个文件里面,只要加载这一个文件就够了.后来,代码越来越多,一 ...

  3. winform学习之----图片控件应用(上一张,下一张)

    示例1: int i = 0;        string[] path = Directory.GetFiles(@"C:\Users\Administrator\Desktop\图片&q ...

  4. 使用Objective-C的文档生成工具:appledoc

    使用Objective-C的文档生成工具:appledoc 前言 做项目的人多了,就需要文档了.今天开始尝试写一些项目文档.但是就源代码来说,文档最好和源码在一起,这样更新起来更加方便和顺手.象 Ja ...

  5. 命令行编译运行Java

    首先要安装JDK,然后设置环境变量Path,添加C:\Program Files (x86)\Java\jdk1.8.0_66\bin 然后建立一个名为j.java的文件,里面加入如下代码: publ ...

  6. QAction QActionGroup QMenu 使用方法

    在Qt中,QAction,QActionGroup 和 QMenu类用用来操作软件的菜单栏的,比如很多软件都有文件菜单,里面有打开,保存,另存为之类的选项,在Qt中就是通过这几个类来实现的.或者是在菜 ...

  7. Programming with gtkmm 3

      https://developer.gnome.org/gtkmm-tutorial/unstable/index.html.zh_CN 1. 序言 1.1. 本书 1.2. gtkmm 2. 安 ...

  8. [转载]CAsyncSocket及CSocket注解

    MFC疑难注解:CAsyncSocket及CSocket MFC对SOCKET编程的支持其实是很充分的,然而其文档是语焉不详的.以至于大多数用VC编写的功能稍复杂的网络程序,还是使用API的.故CAs ...

  9. PHP wget 增强脱裤脚本(PDO MYSQL)

    脚本参考了 LCX Gavin2位前辈的帖子.在此表示非常的感谢. https://www.t00ls.net/thread-26740-1-1.html https://www.t00ls.net/ ...

  10. js - 犀牛学习

    1.id选择器 var ul = document.getElementById("empty"); 2.属性和事件配置 li.className = "ditem&qu ...