21.仿简道云公式函数实战-数学函数-COS

1. COS函数

COS 函数可用于计算角度的余弦值,返回 -1 到 1 之间的数值。

2. 函数用法

COS(弧度)

3. 函数示例

如计算 COS(60°) 的值,可设置公式为COS(RADIANS(60)),返回 0.5。

4. 代码实战

首先我们在function包下创建math包,在math包下创建CosFunction类,代码如下:

package com.ql.util.express.self.combat.function.math;import com.ql.util.express.Operator;
import com.ql.util.express.self.combat.exception.FormulaException;/*** 类描述: COS函数** @author admin* @version 1.0.0* @date 2023/11/23 9:38*/
public class CosFunction extends Operator {public CosFunction(String name) {this.name = name;}@Overridepublic Object executeInner(Object[] objects) throws Exception {// 参数校验if (objects.length == 0) {throw new FormulaException("操作数异常");}double hudu = Double.parseDouble(objects[0].toString());Object result = Math.cos(hudu);return result;}
}

把CosFunction类注册到公式函数入口类中,代码如下:

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.*;/*** 类描述: 仿简道云公式函数实战入口类** @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"));// AVERAGE函数this.addFunction("AVERAGE",new AvgFunction("AVERAGE"));// CEILING函数this.addFunction("CEILING",new CeilingFunction("CEILING"));// RADIANS函数this.addFunction("RADIANS",new RadiansFunction("RADIANS"));// COS函数this.addFunction("COS",new CosFunction("COS"));}
}

创建测试用例

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 COS() throws Exception{FormulaRunner formulaRunner = new FormulaRunner(true,true);// 创建上下文DefaultContext<String, Object> context = new DefaultContext<>();String express = "COS(RADIANS(a))";context.put("a",60.0);Object object = formulaRunner.execute(express, context, null, true, true);System.out.println(object);}}

运行结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2659461.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Apipost-Helper使用流程

Apipost-Helper是由Apipost推出的IDEA插件&#xff0c;写完接口可以进行快速调试&#xff0c;且支持搜索接口、根据method跳转接口&#xff0c;还支持生成标准的API文档&#xff0c;注意&#xff1a;这些操作都可以在代码编辑器内独立完成&#xff0c;非常好用&#xff01;这里…

码住!8个小众宝藏的开发者学习类网站

1、simplilearn simplilearn是全球排名第一的在线学习网站&#xff0c;它的课程由世界知名大学、顶级企业和领先的行业机构通过实时在线课程设计和提供&#xff0c;其中包括顶级行业从业者、广受欢迎的培训师和全球领导者。 2、VisuAlgo VisuAlgo是一个免费的在线学习算法和数…

03-JWT令牌和普通令牌的区别,JWT令牌的格式和生成

JWT令牌 普通令牌问题 普通令牌的问题: 以OAuth2的密码模式为例进行说明,客户端每次访问资源时, 资源服务都需要远程请求认证服务去校验令牌的合法性导致执行性能低 如果能够让资源服务自己校验令牌的合法性&#xff0c;这样就可以省去远程请求认证服务的成本并提高性能 常见…

SpringCloud(H版alibaba)框架开发教程---附源码 一

源码地址&#xff1a;https://gitee.com/jackXUYY/springboot-example 创建订单服务&#xff0c;支付服务&#xff0c;公共api服务&#xff08;共用的实体&#xff09;&#xff0c;eureka服务 1.cloud-consumer-order80 2.cloud-provider-payment8001 3.cloud-api-commons 4.…

国标标准和行业标准使用介绍

场景 我现在所在行业是交通行业&#xff0c;主要做城市交通信控相关的工作&#xff0c;后续可能会涉及高速、收费站、稽核收费等业务场景在做产品开发时&#xff0c;我们需要有一个标准可以参考&#xff0c;这些标准必须是公认的&#xff0c;这时就用到了 国家标准、行业标准等…

仓储革新:AR技术引领物流进入智慧时代

根据《2022年中国物流行业研究&#xff1a;深度探析行业现状&#xff08;智能设备及智能软件&#xff09;》&#xff0c;报告中提及&#xff1a;“中国社会物流总额依然保持着较为良好的增长态势&#xff0c;年增速已恢复至常年平均水平。2021年社会物流总额细分中工业物流总额…

有没有什么软件可以用来线上走审批流程的?

有没有什么软件可以用来线上走审批流程的&#xff1f; 这就不得不提一嘴我们简道云了——因为&#xff0c;用简道云来搭建审批流程是特别“省”的&#xff1a; 省沟通&#xff1a;不用费心费力跟外部开发者沟通需求&#xff0c;自己动手做一点试一点&#xff1b; 省时间&…

数据通信基础知识

消息和信息、信号和数据 消息和信息 通信是在源点与终点之间传递消息或者信息。 信息和消息有着不同的概念。 消息是指能向人们表达客观物质运动和主观思维活动的文字、符号、数据、语音和图像等。它有两个特点: 能被通信双方所理解可以相互传递。 信息是指包含在消息中对通…

JOSEF约瑟 双位置继电器 DCS-12/110V 线圈电压直流110V 板前安装

系列型号&#xff1a; DCS-11双位置继电器&#xff1b; DCS-12双位置继电器&#xff1b; DCS-13双位置继电器&#xff1b; RXMVB2 RK 251 204双位置继电器&#xff1b; RXMVB2 RK 251 205双位置继电器&#xff1b; RXMVB2 RK 251 106双位置继电器&#xff1b; 一、用途 …

本地缓存:Caffeine入门使用

概况 回顾互联网应用发展史&#xff0c;可以发现一个通用并且普遍存在的一个工作过程。如下图所示&#xff0c;用户从浏览器发出请求 -> 网络转发请求 -> 应用服务业务处理 -> 底层存储信息获取&#xff0c;然后逆向的返回用户&#xff0c;形成页面给予用户相应信息。…

[递归回溯枚举] 装载问题

装载问题 题目描述 有一批共 n 个集装箱要装上 2 艘载重量分别为 c1和 c2的轮船&#xff0c;其中集装箱 i 的重量为 wi&#xff0c;且 装载问题要求确定&#xff0c;是否有一个合理的装在方案可将这 n 个集装箱装上这 2 艘轮船。如果有&#xff0c;找出最优装载方案。 关于输…

【idea】运行工程时候卡了许久Java Method Breakpoints

老以为是数据库连接不上&#xff0c;此问题概率性小&#xff0c;操作上面不小心打了断点… 应该是打断点的时候&#xff0c;打到了方法上面&#xff0c;去掉哟 Java Method Breakpoints

文件过大放不了U盘?三个方法非常简单~

文件过大放不了U盘我们可以从文件过大这个角度来解决一下这个问题&#xff0c;可以借助一些工具把文件压缩后&#xff0c;体积变小后&#xff0c;再放入U盘&#xff0c;使得u盘得到高效的利用&#xff0c;下面是推荐的一些好用的软件。 一、嗨格式压缩大师 是一款可以压缩多种…

干货!一文详解车间管理的五大基本方法

车间管理是制造型企业生产过程中的重要环节&#xff0c;它直接影响着企业的生产效率、成本控制、产品质量以及员工的士气与工作效率。优秀的车间管理不仅能够提升产品的质量和生产力&#xff0c;还能降低运营成本&#xff0c;从而在激烈的市场竞争中为企业赢得优势。 为了帮助…

1.3MySQL中的自连接

自己的表和自己连接&#xff0c;核心&#xff1a;一张表拆为两张一样的表。 语法&#xff1a;select 字段列表 from 表 [as] 表别名1,表 [as] 表别名2 where 条件...; 关于怎样把一个表拆分成一个表&#xff0c;只要给它们分别取别名就行 categoryidpidcategoryname21信息…

ai写作生成器哪个好用?值得推荐这几款

随着人工智能技术的不断发展&#xff0c;AI写作生成器逐渐成为了写作领域的新宠。这些软件利用机器学习和自然语言处理等技术&#xff0c;能够自动生成高质量的文章&#xff0c;为写作者提供了极大的便利。在国内&#xff0c;也涌现出了许多优秀的AI写作软件。本文将介绍几款国…

16-网络安全框架及模型-BiBa完整性模型

目录 BiBa完整性模型 1 背景概述 2 模型原理 3 主要特性 4 优势和局限性 5 应用场景 BiBa完整性模型 1 背景概述 Biba完整性模型是用于保护数据完整性的模型&#xff0c;它的主要目标是确保数据的准确性和一致性&#xff0c;防止未授权的修改和破坏。在这个模型中&#…

事务的简介

一、什么是事务 事务是一组数据库的操作序列&#xff0c;包含一个或多个sql操作命令&#xff08;增删改&#xff09;&#xff0c;事务将所有的操作命令看做一个不可分割的整体&#xff0c;向数据库系统提交或撤销操作&#xff0c;所有操作要么执行要么不执行。 ●事务是一种机…

Apache OFBiz RCE漏洞复现(CVE-2023-51467)

0x01 产品简介 Apache OFBiz是一个电子商务平台,用于构建大中型企业级、跨平台、跨数据库、跨应用服务器的多层、分布式电子商务类应用系统。 0x02 漏洞概述 漏洞成因 该系统的身份验证机制存在缺陷,可能允许未授权用户通过绕过标准登录流程来获取后台访问权限。此外,在…

如何借助边缘网关打造智慧配电房安全方案

配电房是电力系统的重要组成部分&#xff0c;通常设置有各种高压配电装置和箱柜&#xff0c;是企业安全管理的重点。传统的人工巡检和监控总是难以避免疏漏&#xff0c;导致风险隐患的产生和扩大。 随着物联网、边缘计算、设备联动控制等技术的普及应用&#xff0c;佰马针对配电…