[發明專利]浮點數計算精度處理方法、系統、介質及設備有效
| 申請號: | 202110707266.X | 申請日: | 2021-06-24 |
| 公開(公告)號: | CN113326048B | 公開(公告)日: | 2023-01-17 |
| 發明(設計)人: | 鄧力;宋金澤 | 申請(專利權)人: | 上海萬向區塊鏈股份公司 |
| 主分類號: | G06F8/41 | 分類號: | G06F8/41;G06F8/71;G06F9/30 |
| 代理公司: | 上海段和段律師事務所 31334 | 代理人: | 李佳俊;郭國中 |
| 地址: | 200086 上海*** | 國省代碼: | 上海;31 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 浮點 計算 精度 處理 方法 系統 介質 設備 | ||
1.一種浮點數計算精度處理方法,其特征在于,包括:
步驟1:啟動babel編譯器對JS代碼進行編譯處理,將JS代碼轉換為抽象語法樹形態;
步驟2:對抽象語法樹進行遍歷,定位每個四則運算的代碼節點,獲取四則運算語句的左、右節點內容,根據運算符類型及左右節點的屬性值創建補丁代碼的抽象語法樹,將新創建的抽象語法樹替換掉當前定位到的四則運算代碼節點的抽象語法樹;
步驟3:根據修改替換后的抽象語法樹生成新JS代碼,進行無需精度計算的四則運算;
在替換抽象語法樹前后,通過webpack對JS代碼進行打包處理,并對抽象語法樹進行備份;
使用訪問者模式對抽象語法樹進行遍歷,對所有的簽名和二進制表達式節點進行訪問,得到四則運算符類型;
所述運算符類型包括:+運算符、+=運算符、-運算符、-=運算符、*運算符和/運算符;
針對+運算符、+=運算符,生成引入工具函數包中加法函數accAdd;
針對-運算符、-=運算符,生成引入工具函數包中減法函數accSub;
針對*運算符,生成引入工具函數包中乘法函數accMul;
針對/運算符,生成引入工具函數包中除法函數accDiv;
將運算符左右節點的屬性值作為函數參數調用的抽象語法樹模板;
基于webpack的前端項目構建流程中處理JavaScript浮點數計算精度問題的流程為:在webpack配置文件中,配置JS代碼使用babel-loader進行處理,在babel配置文件中,加入精度處理插件;配置文件就緒后,啟動webpack打包命令對代碼進行打包;webpack讀取到JS代碼,將JS代碼交由babel-loader;babel-loader調用babel及精度處理插件,對抽象語法樹AST進行修改;babel將處理完成的代碼通過babel-loader傳遞給webpack進行打包;
對精度問題進行自動化處理的流程為:babel通過babel/parser模塊將JavaScript代碼分析得到AST后調用本發明裝置對AST進行遍歷,對所有的AssignmentExpression、BinaryExpression節點進行訪問;通過分析對應的AssignmentExpression、BinaryExpression中存在的運算符類型,創建不同的AST模塊,對于+、+=運算符,將會創建調用加法函數的AST模版;對于-、-=運算符,將創建調用減法函數的AST模版;對于*運算符,將創建調用乘法函數的AST模版;對于/運算符,將創建調用除法函數的AST模版;根據新創建的AST模版替換掉原代碼中四則運算相關的AST節點,實現對原代碼的轉換;最后babel通過babel/generate模塊將新的AST生成轉換后的新代碼,最終轉換好的新代碼中便會包含用于處理計算精度的補丁代碼。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于上海萬向區塊鏈股份公司,未經上海萬向區塊鏈股份公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202110707266.X/1.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:水面垃圾收集器行進機構
- 下一篇:熔斷配置修改方法、裝置、設備及可讀存儲介質





