国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JavaScript數(shù)據(jù)精度缺失問題

蘇丹 / 1144人閱讀

摘要:說到數(shù)據(jù)精度缺失的問題,就想起今年夏天剛轉(zhuǎn)正做的一個(gè)項(xiàng)目。但是和用二進(jìn)制表示的話位數(shù)是無法窮盡的。因此我們看到的用二進(jìn)制表示的某數(shù)只是真實(shí)的的一個(gè)近似數(shù)。這是一個(gè)挺好用的數(shù)據(jù)運(yùn)算工具,它也是為了解決數(shù)據(jù)精度缺失而產(chǎn)生的。

說到數(shù)據(jù)精度缺失的問題,就想起今年夏天剛轉(zhuǎn)正做的一個(gè)項(xiàng)目。當(dāng)時(shí)的需求涉及到金額的計(jì)算,那時(shí)候?qū)s的了解比現(xiàn)在還少,不過當(dāng)時(shí)關(guān)于金額計(jì)算這塊js函數(shù)的封裝是項(xiàng)目里架構(gòu)師寫的,印象很深,當(dāng)時(shí)他就直呼:被JS精度缺失坑了一把!最近看資料又接觸到精度缺失,那就自己站在巨人們的肩膀上整理一下。

JS中數(shù)據(jù)類型Number

不像Java,數(shù)字型的數(shù)據(jù)類型有short,int,long,float,double等,數(shù)字類型的數(shù)據(jù)在JS中只有一種數(shù)據(jù)類型——Number。那它的底層是怎么表示的呢?我們參考菜鳥教程的一段話,它是這么說的:

JavaScript采用IEEE754標(biāo)準(zhǔn)定義的64位浮點(diǎn)格式表示數(shù)字,它能表示最大值為±1.7976931348623157 x
10308,最小值為±5 x 10 -324。

數(shù)據(jù)的存儲(chǔ)格式用圖形表示如下↓

(這里先給自己留個(gè)坑,等搞清楚了具體的浮點(diǎn)數(shù)計(jì)算方法后再填……)

實(shí)例演示講解

我們?cè)诳刂婆_(tái)上做如下的十進(jìn)制的加法運(yùn)算,如下圖所示

表面上我們做的是十進(jìn)制的加法,實(shí)際上計(jì)算機(jī)在底層把它換算成了二進(jìn)制,再做運(yùn)算。但是0.1和0.2用二進(jìn)制表示的話位數(shù)是無法窮盡的。因此我們看到的0.1用二進(jìn)制表示的某數(shù)只是真實(shí)的0.1的一個(gè)近似數(shù)。0.2也是這個(gè)道理。所以實(shí)際上0.1+0.2是兩個(gè)近似數(shù)的相加,因此這個(gè)結(jié)果也就是0.3的近似數(shù)啦。這里不做十進(jìn)制小數(shù)轉(zhuǎn)二進(jìn)制的詳細(xì)算法,感興趣的小伙伴可以繼續(xù)深入研究。

遇到這種問題,如何解決

10的n次冪運(yùn)算
把數(shù)字乘以10的n次冪,轉(zhuǎn)換成計(jì)算機(jī)能夠精確識(shí)別的整數(shù),之后再除以相同的10的n次冪。

number-precision
這是一個(gè)挺好用的JS數(shù)據(jù)運(yùn)算工具,它也是為了解決JS數(shù)據(jù)精度缺失而產(chǎn)生的。用法如下(官網(wǎng)的截圖)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/100258.html

相關(guān)文章

  • 有效解決 css sprite 圖片使用 rem 單位邊角缺失問題

    摘要:起因在移動(dòng)端使用布局時(shí)圖片也需要用單位。例如原本提高倍寫成這樣瀏覽器解析就會(huì)準(zhǔn)確多了。下面提到的辦法就是的方案怎么做思路單位數(shù)值變大了,整體也會(huì)變得很大,需要縮小回原來的尺寸。本文同時(shí)發(fā)布在的博客 起因 showImg(https://segmentfault.com/img/remote/1460000008910041?w=702&h=403); showImg(https://s...

    tunny 評(píng)論0 收藏0
  • Pandas庫基礎(chǔ)分析——數(shù)據(jù)規(guī)整化處理

    摘要:前言在數(shù)據(jù)分析和建模之前需要審查數(shù)據(jù)是否滿足數(shù)據(jù)處理應(yīng)用的要求,以及對(duì)數(shù)據(jù)進(jìn)行清洗,轉(zhuǎn)化,合并,重塑等一系列規(guī)整化處理。通過數(shù)據(jù)信息查看可知數(shù)據(jù)中存在缺失值,比如各存在個(gè),各存在個(gè)。 前言 在數(shù)據(jù)分析和建模之前需要審查數(shù)據(jù)是否滿足數(shù)據(jù)處理應(yīng)用的要求,以及對(duì)數(shù)據(jù)進(jìn)行清洗,轉(zhuǎn)化,合并,重塑等一系列規(guī)整化處理。pandas標(biāo)準(zhǔn)庫提供了高級(jí)靈活的方法,能夠輕松地將數(shù)據(jù)規(guī)整化為正確的形式,本文通...

    roundstones 評(píng)論0 收藏0
  • JavaScript 的未來:它還少些什么?

    摘要:例如通過哈希表映射需要一個(gè)操作來檢查值是否相等,另一個(gè)操作用于創(chuàng)建哈希碼。如果使用哈希碼,則對(duì)象應(yīng)該是不可變的。模式匹配提案目前處于第階段。在本文,我們研究其中的智能管道另一個(gè)提議被稱為。更強(qiáng)大,更重量級(jí),并附帶自己的數(shù)據(jù)結(jié)構(gòu)。 翻譯:瘋狂的技術(shù)宅原文:http://2ality.com/2019/01/fut... 本文首發(fā)微信公眾號(hào):jingchengyideng歡迎關(guān)注,每天...

    layman 評(píng)論0 收藏0
  • 使用 JSONObject 需要注意避免的一個(gè)問題

    摘要:作者介紹鮑協(xié)浩,小米部門,基礎(chǔ)應(yīng)用組通訊錄開發(fā)負(fù)責(zé)人問題現(xiàn)象在業(yè)務(wù)同步的邏輯代碼中,使用到了來解析服務(wù)端的數(shù)據(jù)。 作者介紹:鮑協(xié)浩,小米MIUI部門, MIUI基礎(chǔ)應(yīng)用組通訊錄開發(fā)負(fù)責(zé)人 問題現(xiàn)象 在 Android 業(yè)務(wù)同步的邏輯代碼中,使用到了 JSONObject 來解析服務(wù)端的 JSON 數(shù)據(jù)。同時(shí)本地因?yàn)闃I(yè)務(wù)新增需求的緣故,在本地?cái)?shù)據(jù)庫中使用 JSONObject 緩存了包括...

    sutaking 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<