深圳网站制作平台,酒店网站建设方案ppt,做门户网站用什么系统好,中国建设银行怎么添加卡网站1. ABS函数
ABS 函数可用于返回数字的绝对值
2. 函数用法
ABS(number)
3. 函数示例
如#xff0c;ABS(-12)和ABS(12)的返回结果均为 12。
4. 代码实战
首先我们在function包下创建math包#xff0c;在math包下创建AbsFunction类#xff0c;代码如下#xff1a;
pac…1. ABS函数
ABS 函数可用于返回数字的绝对值
2. 函数用法
ABS(number)
3. 函数示例
如ABS(-12)和ABS(12)的返回结果均为 12。
4. 代码实战
首先我们在function包下创建math包在math包下创建AbsFunction类代码如下
package com.ql.util.express.self.combat.function.math;import com.ql.util.express.Operator;
import com.ql.util.express.self.combat.exception.FormulaException;/*** 类描述: ABS函数** author admin* version 1.0.0* date 2023/11/23 8:57*/
public class AbsFunction extends Operator {public AbsFunction(String name) {this.name name;}Overridepublic Object executeInner(Object[] list) throws Exception {if (list.length 0) {throw new FormulaException(操作数异常);}// 取出来数据Object result list[0];if (result instanceof Integer) {int val ((Integer) result).intValue();// 调用Math函数提供的取绝对值的方法result Math.abs(val);} else if (result instanceof Double) {double val ((Double) result).doubleValue();result Math.abs(val);} else if (result instanceof Float) {double val ((Float) result).floatValue();result Math.abs(val);} else if (result instanceof Long) {long val ((Long) result).longValue();result Math.abs(val);} else if (result instanceof Short) {short val ((Short) result).shortValue();result Math.abs(val);} else {throw new FormulaException(参数数据类型异常);}return result;}
}
把AbsFunction类注册到公式函数入口类中代码如下
package com.ql.util.express.self.combat.ext;import com.ql.util.express.ExpressRunner;
import com.ql.util.express.IExpressResourceLoader;
import com.ql.util.express.parse.NodeTypeManager;
import com.ql.util.express.self.combat.function.logic.*;
import com.ql.util.express.self.combat.function.math.AbsFunction;/*** 类描述: 仿简道云公式函数实战入口类** author admin* version 1.0.0* date 2023/11/21 15:29*/
public class FormulaRunner extends ExpressRunner {public FormulaRunner() {super();}public FormulaRunner(boolean isPrecise, boolean isTrace) {super(isPrecise,isTrace);}public FormulaRunner(boolean isPrecise, boolean isStrace, NodeTypeManager nodeTypeManager) {super(isPrecise,isStrace,nodeTypeManager);}public FormulaRunner(boolean isPrecise, boolean isTrace, IExpressResourceLoader iExpressResourceLoader, NodeTypeManager nodeTypeManager) {super(isPrecise,isTrace,iExpressResourceLoader,nodeTypeManager);}Overridepublic void addSystemFunctions() {// ExpressRunner 的内部系统函数super.addSystemFunctions();// 扩展公式函数this.customFunction();}/**** 自定义公式函数*/public void customFunction() {// 逻辑公式函数this.addLogicFunction();// 数学公式函数this.addMathFunction();}public void addLogicFunction() {// AND函数this.addFunction(AND,new AndFunction(AND));// IF函数this.addFunction(IF,new IfFunction(IF));// IFS函数this.addFunction(IFS,new IfsFunction(IFS));// XOR函数this.addFunction(XOR,new XorFunction(XOR));// TRUE函数this.addFunction(TRUE,new TrueFunction(TRUE));// FALSE函数this.addFunction(FALSE,new FalseFunction(FALSE));// NOT函数this.addFunction(NOT,new NotFunction(NOT));// OR函数this.addFunction(OR,new OrFunction(OR));}public void addMathFunction() {// ABS函数this.addFunction(ABS,new AbsFunction(ABS));}
}
创建测试用例
package com.ql.util.express.self.combat;import com.ql.util.express.DefaultContext;
import com.ql.util.express.self.combat.ext.FormulaRunner;
import org.junit.Test;/*** 类描述: 实战测试类** author admin* version 1.0.0* date 2023/11/21 15:45*/
public class CombatTest {Testpublic void ABS() throws Exception{FormulaRunner formulaRunner new FormulaRunner(true,true);// 创建上下文DefaultContextString, Object context new DefaultContext();String express ABS(-4294967294);context.put(a,-11.1111);context.put(b,3.0);Object object formulaRunner.execute(express, context, null, true, true);System.out.println(object);}}
运行结果