ToolGood.Algorithm計算引擎
ToolGood.Algorithm 是一款計算引擎,目前支持四則運算、Excel 絕大多數(shù)函數(shù),并支持自定義參數(shù)。
快速上手
AlgorithmEngine engine = new AlgorithmEngine();
double a=0.0;
if (engine.Parse("1+2")) {
a = (double)engine.Evaluate();
}
var c = engine.TryEvaluate("2+3", 0);
var d = engine.TryEvaluate("count({1,2,3,4})", 0);//{}代表數(shù)組,返回:4
var s = engine.TryEvaluate("'aa'&'bb'", ""); //字符串連接,返回:aabb
var r = engine.TryEvaluate("(1=1)*9+2", 0); //返回:11
var d = engine.TryEvaluate("'2016-1-1'+1", DateTime.MinValue); //返回日期:2016-1-2
var t = engine.TryEvaluate("'2016-1-1'+9*'1:0'", DateTime.MinValue);//返回日期:2016-1-1 9:0
自定義參數(shù)
//定義圓柱信息
public class Cylinder : AlgorithmEngine
{
private int _radius;
private int _height;
public Cylinder(int radius, int height)
{
_radius = radius;
_height = height;
}
protected override Operand GetParameter(Operand curOpd)
{
if (curOpd.Parameter == "[半徑]") {
return new Operand(OperandType.NUMBER, _radius);
}
if (curOpd.Parameter == "[直徑]") {
return new Operand(OperandType.NUMBER, _radius * 2);
}
if (curOpd.Parameter == "[高]") {
return new Operand(OperandType.NUMBER, _height);
}
return base.GetParameter(curOpd);
}
}
//調(diào)用方法
Cylinder c = new Cylinder(3, 10);
c.TryEvaluate("[半徑]*[半徑]*pi()", 0.0); //圓底面積
c.TryEvaluate("[直徑]*pi()", 0.0); //圓的長
c.TryEvaluate("[半徑]*[半徑]*pi()*[高]", 0.0); //圓的體積
Excel 函數(shù)
函數(shù):邏輯函數(shù)、數(shù)學與三角函數(shù)、文本函數(shù)、統(tǒng)計函數(shù)、日期與時間函數(shù)
注:函數(shù)名不分大小寫,帶方括號的參數(shù)可省略,示例的返回值,可能為近似值。
評論
圖片
表情
