zoukankan      html  css  js  c++  java
  • asp.net字符串的数学表达式计算结果

    using System;
    using System.Collections.Generic;
    using System.Web;
    using System.CodeDom.Compiler;
    using System.Reflection;
    
    namespace WebApplication1
    {
        /// <summary>
        /// 动态求值
        /// </summary>
        public class FormulaCalculator
        {
            /// <summary>
            /// 计算结果,如果表达式出错则抛出异常
            /// </summary>
            /// <param name="statement">表达式,如"1+2+3+4"</param>
            /// <returns>结果</returns>
            public static object Eval(string statement)
            {
                return _evaluatorType.InvokeMember(
                            "Eval",
                            BindingFlags.InvokeMethod,
                            null,
                            _evaluator,
                            new object[] { statement }
                         );
            }
    
            static FormulaCalculator()
            {
                //构造JScript的编译驱动代码
                CodeDomProvider provider = CodeDomProvider.CreateProvider("JScript");
    
                CompilerParameters parameters;
                parameters = new CompilerParameters();
                parameters.GenerateInMemory = true;
    
                CompilerResults results;
                results = provider.CompileAssemblyFromSource(parameters, _jscriptSource);
    
                Assembly assembly = results.CompiledAssembly;
                _evaluatorType = assembly.GetType("Evaluator");
    
                _evaluator = Activator.CreateInstance(_evaluatorType);
            }
    
            private static object _evaluator = null;
            private static Type _evaluatorType = null;
    
            /// <summary>
            /// JScript代码
            /// </summary>
            private static readonly string _jscriptSource =
                @"class Evaluator
                  {
                      public function Eval(expr : String) : String 
                      { 
                         return eval(expr); 
                      }
                  }";
        }
    }

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

  • 相关阅读:
    mysql qps tps
    SQL RIGHT JOIN 关键字
    C#的多态性
    c# 与java之间的简单区别
    多少行转多少列
    SQL语句中&、单引号等特殊符号的处理
    sql 函数的理解
    c# 基础之数组(包含三维数组)
    泛型之Dictionary
    在十六进制字符串与数值类型之间转换
  • 原文地址:https://www.cnblogs.com/superfeeling/p/4970365.html
Copyright © 2011-2022 走看看