[發明專利]數據處理方法及裝置有效
| 申請號: | 201711051652.8 | 申請日: | 2017-10-31 |
| 公開(公告)號: | CN107832058B | 公開(公告)日: | 2022-01-18 |
| 發明(設計)人: | 盧山 | 申請(專利權)人: | 北京小米移動軟件有限公司 |
| 主分類號: | G06F8/41 | 分類號: | G06F8/41;G06F9/30 |
| 代理公司: | 北京博思佳知識產權代理有限公司 11415 | 代理人: | 林祥 |
| 地址: | 100085 北京市海淀區清河*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 數據處理 方法 裝置 | ||
本公開是關于一種數據處理方法及裝置,用以提高浮點數運算的精確度,且方法簡單。所述方法包括:如果在調用函數時在函數體的首行檢測到預設觸發條件,則確定與函數對應的計算程序;該計算程序采用字符串模擬數學計算的方法實現;基于上述的計算程序得到計算結果;將上述的計算結果確定為函數的返回值。本公開技術方案可以提高浮點數運算的精確度,且方法簡單。
技術領域
本公開涉及計算機技術領域,尤其涉及一種數據處理方法及裝置。
背景技術
JavaScript語言同Java、C等語言相似,其浮點數的運算默認都是不精確的,例如,0.1+0.2的結果是0.30000000000000004,這是因為它采用了IEEE754標準。IEEE 754標準的初衷是為了保證性能,在大部分情況下確實利大于弊,但有些場景,如計算分割比特幣時的加減,是要求精確計算的。
相關技術中,由于JavaScript不像Java那樣內置保證浮點數計算精確的strictfp關鍵字,通常情況下是將浮點數擴大若干倍,進行運算后,再縮小回去。
發明內容
為克服相關技術中存在的問題,本公開實施例提供一種數據處理方法及裝置,用以提高浮點數運算的精確度,且方法簡單。
根據本公開實施例的第一方面,提供一種數據處理方法,包括:
如果在調用函數時在函數體的首行檢測到預設觸發條件,則確定與所述函數對應的計算程序;所述計算程序采用字符串模擬數學計算的方法實現;
基于所述計算程序得到計算結果;
將所述計算結果確定為所述函數的返回值。
本公開的實施例提供的技術方案可以包括以下有益效果:通過在函數體的首行預先設置上述的預設觸發條件,使得在調用函數時,如果檢測到上述的預設觸發條件,則確定與該函數對應的采用字符串模擬數學計算的方法實現的計算程序,并基于該計算程序進行計算得到計算結果,最后,將該計算結果確定為函數的返回值。由于采用上述的計算程序采用字符串模擬數學計算的方法實現,相當于模擬人工手算,可以提高浮點數運算的精確度,而且,計算過程中,無需對浮點數進行轉換,方法簡單,可以避免出現錯誤。
在一個實施例中,所述如果在調用函數時在函數體的首行檢測到預設觸發條件,則確定與所述函數對應的計算程序之前,還可包括:
如果通過第一編譯器識別所述預設觸發條件失敗,則將所述函數中除所述預設觸發條件以外的部分的源代碼轉換為對應的字節碼,得到第一類文件;
所述方法,還包括:
基于所述第一類文件確定所述函數的返回值。
當第一編譯器識別所述預設觸發條件失敗時,可以忽略函數體中的預設觸發條件,將函數中除所述預設觸發條件以外的部分的源代碼轉換為對應的字節碼,得到第一類文件,以供虛擬機基于第一類文件確定所述函數的返回值。這樣,即使編譯器不能識別預設觸發條件,也可以基于上述的函數得到函數的返回值,兼容性強。
在一個實施例中,所述如果在調用函數時在函數體的首行檢測到預設觸發條件,則確定與所述函數對應的計算程序之前,還可包括:
如果通過第二編譯器識別所述預設觸發條件成功,則通過轉譯器將所述函數的第一源代碼轉譯為基于小數類實現所述函數的第二源代碼;所述第二編譯器的版本高于所述第一編譯器的版本;
通過所述第一編譯器將所述第二源代碼轉換為對應的字節碼,得到第二類文件;
在虛擬機中創建包括所述小數類的鏈接庫;
所述方法,還可包括:
基于所述第二類文件與所述鏈接庫確定所述函數的返回值。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京小米移動軟件有限公司,未經北京小米移動軟件有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201711051652.8/2.html,轉載請聲明來源鉆瓜專利網。





