摘要:說到數(shù)據(jù)精度缺失的問題,就想起今年夏天剛轉(zhuǎn)正做的一個項目。但是和用二進制表示的話位數(shù)是無法窮盡的。因此我們看到的用二進制表示的某數(shù)只是真實的的一個近似數(shù)。這是一個挺好用的數(shù)據(jù)運算工具,它也是為了解決數(shù)據(jù)精度缺失而產(chǎn)生的。
說到數(shù)據(jù)精度缺失的問題,就想起今年夏天剛轉(zhuǎn)正做的一個項目。當時的需求涉及到金額的計算,那時候?qū)s的了解比現(xiàn)在還少,不過當時關(guān)于金額計算這塊js函數(shù)的封裝是項目里架構(gòu)師寫的,印象很深,當時他就直呼:被JS精度缺失坑了一把!最近看資料又接觸到精度缺失,那就自己站在巨人們的肩膀上整理一下。
JS中數(shù)據(jù)類型Number不像Java,數(shù)字型的數(shù)據(jù)類型有short,int,long,float,double等,數(shù)字類型的數(shù)據(jù)在JS中只有一種數(shù)據(jù)類型——Number。那它的底層是怎么表示的呢?我們參考菜鳥教程的一段話,它是這么說的:
JavaScript采用IEEE754標準定義的64位浮點格式表示數(shù)字,它能表示最大值為±1.7976931348623157 x
10308,最小值為±5 x 10 -324。
數(shù)據(jù)的存儲格式用圖形表示如下↓
(這里先給自己留個坑,等搞清楚了具體的浮點數(shù)計算方法后再填……)
實例演示講解我們在控制臺上做如下的十進制的加法運算,如下圖所示
表面上我們做的是十進制的加法,實際上計算機在底層把它換算成了二進制,再做運算。但是0.1和0.2用二進制表示的話位數(shù)是無法窮盡的。因此我們看到的0.1用二進制表示的某數(shù)只是真實的0.1的一個近似數(shù)。0.2也是這個道理。所以實際上0.1+0.2是兩個近似數(shù)的相加,因此這個結(jié)果也就是0.3的近似數(shù)啦。這里不做十進制小數(shù)轉(zhuǎn)二進制的詳細算法,感興趣的小伙伴可以繼續(xù)深入研究。
遇到這種問題,如何解決
10的n次冪運算
把數(shù)字乘以10的n次冪,轉(zhuǎn)換成計算機能夠精確識別的整數(shù),之后再除以相同的10的n次冪。
number-precision
這是一個挺好用的JS數(shù)據(jù)運算工具,它也是為了解決JS數(shù)據(jù)精度缺失而產(chǎn)生的。用法如下(官網(wǎng)的截圖)
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/100258.html
摘要:起因在移動端使用布局時圖片也需要用單位。例如原本提高倍寫成這樣瀏覽器解析就會準確多了。下面提到的辦法就是的方案怎么做思路單位數(shù)值變大了,整體也會變得很大,需要縮小回原來的尺寸。本文同時發(fā)布在的博客 起因 showImg(https://segmentfault.com/img/remote/1460000008910041?w=702&h=403); showImg(https://s...
摘要:前言在數(shù)據(jù)分析和建模之前需要審查數(shù)據(jù)是否滿足數(shù)據(jù)處理應用的要求,以及對數(shù)據(jù)進行清洗,轉(zhuǎn)化,合并,重塑等一系列規(guī)整化處理。通過數(shù)據(jù)信息查看可知數(shù)據(jù)中存在缺失值,比如各存在個,各存在個。 前言 在數(shù)據(jù)分析和建模之前需要審查數(shù)據(jù)是否滿足數(shù)據(jù)處理應用的要求,以及對數(shù)據(jù)進行清洗,轉(zhuǎn)化,合并,重塑等一系列規(guī)整化處理。pandas標準庫提供了高級靈活的方法,能夠輕松地將數(shù)據(jù)規(guī)整化為正確的形式,本文通...
摘要:例如通過哈希表映射需要一個操作來檢查值是否相等,另一個操作用于創(chuàng)建哈希碼。如果使用哈希碼,則對象應該是不可變的。模式匹配提案目前處于第階段。在本文,我們研究其中的智能管道另一個提議被稱為。更強大,更重量級,并附帶自己的數(shù)據(jù)結(jié)構(gòu)。 翻譯:瘋狂的技術(shù)宅原文:http://2ality.com/2019/01/fut... 本文首發(fā)微信公眾號:jingchengyideng歡迎關(guān)注,每天...
摘要:作者介紹鮑協(xié)浩,小米部門,基礎應用組通訊錄開發(fā)負責人問題現(xiàn)象在業(yè)務同步的邏輯代碼中,使用到了來解析服務端的數(shù)據(jù)。 作者介紹:鮑協(xié)浩,小米MIUI部門, MIUI基礎應用組通訊錄開發(fā)負責人 問題現(xiàn)象 在 Android 業(yè)務同步的邏輯代碼中,使用到了 JSONObject 來解析服務端的 JSON 數(shù)據(jù)。同時本地因為業(yè)務新增需求的緣故,在本地數(shù)據(jù)庫中使用 JSONObject 緩存了包括...
閱讀 3569·2021-11-15 11:36
閱讀 1060·2021-11-11 16:55
閱讀 694·2021-10-20 13:47
閱讀 2993·2021-09-29 09:35
閱讀 3428·2021-09-08 10:45
閱讀 2554·2019-08-30 15:44
閱讀 849·2019-08-30 11:10
閱讀 1428·2019-08-29 13:43