ToolGood.Algorithm是一款计算引擎,目前支持四则运算、Excel绝大多数函数,并支持自定义参数。
快速上手 AlgorithmEgie egie = ew AlgorithmEgie(); double a=0.0; if (egie.Parse("1+2")) { a = (double)egie.Evaluate(); } var c = egie.TryEvaluate("2+3", 0); var d = egie.TryEvaluate("cout({1,2,3,4})", 0);//{}代表数组,返回:4 var s = egie.TryEvaluate("'aa'&'bb'", ""); //字符串连接,返回:aabb var r = egie.TryEvaluate("(1=1)*9+2", 0); //返回:11 var d = egie.TryEvaluate("'2016-1-1'+1", DateTime.MiValue); //返回日期:2016-1-2 var t = egie.TryEvaluate("'2016-1-1'+9*'1:0'", DateTime.MiValue);//返回日期:2016-1-1 9:0自定义参数//定义圆柱信息 public class Cylider : AlgorithmEgie { private it _radius; private it _height; public Cylider(it radius, it height) { _radius = radius; _height = height; } protected override Operad GetParameter(Operad curOpd) { if (curOpd.Parameter == "[半径]") { retur ew Operad(OperadType.NUMBER, _radius); } if (curOpd.Parameter == "[直径]") { retur ew Operad(OperadType.NUMBER, _radius * 2); } if (curOpd.Parameter == "[高]") { retur ew Operad(OperadType.NUMBER, _height); } retur base.GetParameter(curOpd); } } //调用方法 Cylider c = ew Cylider(3, 10); c.TryEvaluate("[半径]*[半径]*pi()", 0.0); //圆底面积 c.TryEvaluate("[直径]*pi()", 0.0); //圆的长 c.TryEvaluate("[半径]*[半径]*pi()*[高]", 0.0); //圆的体积Excel函数函数:逻辑函数、数学与三角函数、文本函数、统计函数、日期与时间函数
注:函数名不分大小写,带方括号的参数可省略,示例的返回值,可能为近似值。
评论