17.仿簡道云公式函數實戰-數學函數-ABS

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);// 創建上下文DefaultContext<String, 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);}}

運行結果

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/536709.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/536709.shtml
英文地址,請注明出處:http://en.pswp.cn/news/536709.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python是什么?

Python是一種高級編程語言&#xff0c;具有簡單易學、代碼可讀性強、開發效率高等特點。它采用解釋型執行方式&#xff0c;可以跨平臺運行&#xff0c;并且擁有豐富的第三方庫和框架支持&#xff0c;被廣泛應用于Web開發、數據分析、人工智能等領域。 文章目錄 一、Python的歷…

定位 CPU 高負載 Java 線程

常用命令 # 按照 CPU 使用率排序輸出進程信息 ps -eo pid,ppid,%cpu,%mem,cmd --sort-%cpu# 監控對應 pid 進程下的所有線程按照 CPU 排序 top -Hp "$pid" -o %CPU # jstack 輸出 JVM 堆棧信息 jstack $pid演示事例 查看高負載 Java 進程獲取到對應 pid $ ps -eo …

免費福利馬上截止!深圳的戶外小伙伴別錯過!COSP2024體育展來了

COSP2024戶外博覽會 展會時間&#xff1a;2024年3月14-16日 展會地址&#xff1a;深圳福田會展中心 戶外運動愛好者不可錯過&#xff01; COSP2024戶外博覽會不僅可以逛展 看各種露營裝備、戶外器材 還有各種沙龍、峰會活動 就在明年開年&#xff0c;陽春三月天&#xf…

【辦公技巧】ppt如何加密只能看不能修改?

大家是否想要給PPT文件設置加密&#xff0c;讓ppt文件變為只能查看不能修改的狀態&#xff1f;今天給大家分享給PPT文件設置帶有密碼的只讀模式&#xff08;修改權限&#xff09;。 方法如下&#xff1a; PPT文件之后&#xff0c;將PPT文件進行另存為操作&#xff0c;但是在選…

【反射1】——Java基礎(韓順平講解)

一個需求&#xff0c;引出反射 | 完整的反射使用流程&#xff1a; 在不修改源碼的情況下&#xff0c;來控制程序&#xff0c;也符合設計模式中的opc原則(開閉原則&#xff1a;不修改源碼&#xff0c;擴容功能) 1、創建配置文件&#xff1a;re.properties classfullpathcom.r…

SATA和M.2接口的異同點

SATA和M.2接口是連接存儲設備的兩種常見接口&#xff0c;它們在物理尺寸、傳輸速度、線纜和接頭以及適用設備類型等方面有著顯著的異同點。 物理尺寸 SATA接口通常用于2.5英寸硬盤、3.5英寸硬盤等傳統機械硬盤以及SSD&#xff0c;而M.2接口則是一種較為新型的接口標準&#xff…

裝飾 Web3 項目的用戶交互界面(Web3項目二實戰之四)

用戶交互界面是Web3項目必不可少的,畢竟,Web3項目最終是面向用戶的,所以,Web3項目總得需要一個優美的UI界面,已達到用戶在視覺上精彩盛宴。 誠然,一個Web3項目若到了用戶交互界面,大體上,這個Web3項目也將告一段落了。 沒錯,Web3第二個項目,也將終結于本篇,順勢拉開…

線下終端門店調研包含哪些內容

品牌渠道一般分為線上和線下&#xff0c;線上的價格、促銷信息、店鋪優惠機制等都可以通過登錄查看&#xff0c;但是線下門店的數據則需要進店巡查&#xff0c;否則無法得到真實的店鋪銷售數據&#xff0c;當然也有品牌是靠線下的業務團隊報備機制獲得這些信息&#xff0c;但是…

前端常用的Vscode插件

前端常用的Vscode插件&#x1f516; 文章目錄 前端常用的Vscode插件&#x1f516;1. Chinese (Simplified) (簡體中文) Language Pack for Visual Studio Code -- Vscode中文插件2. Code Runner -- 快速運?調試代碼3. Live Server -- 實時重新加載本地開發服務器4. Image prev…

uni-app之HelloWorld實現

鋒哥原創的uni-app視頻教程&#xff1a; 2023版uniapp從入門到上天視頻教程(Java后端無廢話版)&#xff0c;火爆更新中..._嗶哩嗶哩_bilibili2023版uniapp從入門到上天視頻教程(Java后端無廢話版)&#xff0c;火爆更新中...共計23條視頻&#xff0c;包括&#xff1a;第1講 uni…

JAVA版的鴻鵠云商B2B2C:多商家入駐直播商城系統特性解析 商城免 費搭建

鴻鵠云商 b2b2c產品概述 【b2b2c平臺】&#xff0c;以傳統電商行業為基石&#xff0c;鴻鵠云商支持“商家入駐平臺自營”多運營模式&#xff0c;積極打造“全新市場&#xff0c;全新 模式”企業級b2b2c電商平臺&#xff0c;致力干助力各行/互聯網創業騰飛并獲取更多的收益。從消…

Swift 檢測 iCloud狀態

Show me the code: func isICloudContainerAvailable() -> Bool {if let _ FileManager.default.ubiquityIdentityToken {return true} else {return false} }推薦一下剛上線的 App 熊貓小賬本&#xff0c;里面有用到這篇博客講的內容 熊貓小賬本 一個簡潔的記賬 App&…

006.HCIA 路由

1、設備管理 用戶視圖 <xxxx> 系統視圖 [xxxx] 接口視圖 [xxxx-G] 協議視圖 a. 視圖切換 用戶視圖 -> 系統視圖 系統視圖 -> 接口視圖 當前視圖 -> 上一層視圖 當前視圖 -> 用戶視圖 system-view interface g0/0/0 quit Ctrl Z b. 系統視圖命令…

人工智能:預測房價模型的構建與應用

摘要&#xff1a; 人工智能&#xff08;Artificial Intelligence&#xff0c;AI&#xff09;是一種模擬人類智能思維的技術。“預測房價”是AI在房地產領域的重要應用之一。本文將介紹如何使用Python構建一個預測房價的人工智能模型&#xff0c;并對其進行說明和應用。 引言 人…

JavaOOP篇----第十六篇

系列文章目錄 文章目錄 系列文章目錄前言一、a=a+b與a+=b有什么區別嗎?二、final、finalize()、finally三、JDBC操作的步驟四、在使用jdbc的時候,如何防止出現sql注入的問題。前言 前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊…

tinymce自定義工具欄

tinymce自定義工具欄 話不多說直接上代碼&#xff0c;此處添加 imgs 的工具為例 initTinymce() {const _this thisreturn {language_url: https://cdn.jsdelivr.net/npm/tinymce-i18n20.12.25/langs5/zh_CN.js,language: zh_CN,body_class: panel-body ,object_resizing: fal…

strlen和sizeof的初步理解

大家好我是Beilef&#xff0c;一個美好的下我接觸到編程并且逐漸喜歡。我雖然不是科班出身但是我會更加努力地去學&#xff0c;有啥不對的地方請斧正 文章目錄 目錄 文章目錄 前言 想必大家對sizeof肯定很了解&#xff0c;那對strlen又了解多少。其實這個問題應該讓不少人困擾。…

openmediavault基本操作

omv基本操作 使用hostname訪問共享文件夾設置1.掛載磁盤2.提交更改3.新建用戶4.建立共享文件夾5.設置SMB/CIFS服務7.測試7.1.速度測試 使用hostname訪問 把網口和wifi設置成DHCP,使用hostname訪問,這樣把NAS拿到任何地方都不需要配置了,自動聯網進行訪問. #網絡->常規 #設…

Matlab仿真2ASK/OOK、2FSK、2PSK、QPSK、4QAM在加性高斯白噪聲信道中的誤碼率與歸一化信噪比的關系

本文為學習所用&#xff0c;嚴禁轉載。 本文參考鏈接 https://zhuanlan.zhihu.com/p/667382398 QPSK代碼及高斯白噪聲如何產生 https://ww2.mathworks.cn/help/signal/ref/butter.html 濾波器 https://www.python100.com/html/4LEF79KQK398.html 低通濾波器 本實驗使用matlab仿…

靜態HTTP的優勢:速度、安全性和可擴展性,一個都不能少!

大家好&#xff0c;今天我們來聊聊靜態HTTP的優勢。有人可能會說&#xff1a;“靜態HTTP&#xff0c;不就是那些不會動的網頁嗎&#xff1f;”錯&#xff01;靜態HTTP可不僅僅是靜止不動的&#xff0c;它可是讓網站速度飛快、安全穩定、擴展性強的神器&#xff01;不信&#xf…