亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

javascript浮點(diǎn)數(shù)學(xué)習(xí)總結(jié)之0.1+0.2

neroneroffy / 2938人閱讀

摘要:當(dāng)階碼全位,尾數(shù)全為時(shí),采取非規(guī)格化,兩者不包含隱含的,用來表示。最簡單的精度算法就是是位十進(jìn)制,所以位肯定能精確處理。當(dāng)然還有很多,有興趣可以自行查閱一下。

掘金搬來思否
浮點(diǎn)數(shù)的存儲(chǔ)格式:IEEE754-64bit 64位組成格式為:S(1位符號(hào)位) E(11位階碼)M(52位尾數(shù))

符號(hào)位:決定正負(fù),0位正,1位負(fù)

階碼:指數(shù)位則為階碼-1023,決定了數(shù)值的大小

尾數(shù):有效數(shù)字,決定了精度

用科學(xué)計(jì)數(shù)法格式則為:(-1^(符號(hào)位0/1)) 1.xxxxx(尾數(shù)位) 2^(指數(shù)位)

需要記住的IEEE754規(guī)范有:

尾數(shù)位:有效數(shù)字的第一位必定是1,所以這個(gè)1不會(huì)被儲(chǔ)存,也就是說實(shí)際上尾數(shù)位52+1,類似1.xxx第一位就是1。

階碼:不存在負(fù)值,那怎么表示負(fù)指數(shù)呢?就是減去一個(gè)固定值;其值就是1023,也就是偏移量1023;除去全是1和全是0的情況,那么指數(shù)位的范圍則是[(1-1023),(2046-1023)] == [-1022,1023]。

當(dāng)階碼全位0,尾數(shù)全為0時(shí),采取非規(guī)格化,兩者不包含隱含的1,用來表示0。

最簡單的精度算法就是:2^53是16位十進(jìn)制,所以15位肯定能精確處理。

當(dāng)然還有很多,有興趣可以自行查閱一下。

知道了這些,就能更好的理解一些數(shù)值的由來:
Number.MAX_VALUE = 1.7976931348623157e+308;
尾數(shù):1.xxx1,后面為52個(gè)1,
要得到最大值,我們就需要把小數(shù)點(diǎn)往后移,就靠指數(shù)1023-52,剩余971;  
因此最大值等價(jià)于((Math.pow(2,53)-1)*Math.pow(2,971))
Number.MIN_VALUE =5e-324;  
尾數(shù):1.xxxx1,后面第52位為1,其余為0,這時(shí)首位的1需要隱藏,
這時(shí)候就是負(fù)了52位,在加上2^-1022,
等價(jià)于((Math.pow(2,-52))*Math.pow(2,-1022))
Number.MAX_SAFE_INTEGER = 9007199254740991;
安全數(shù)就是能夠精確處理的,精度靠尾數(shù)決定,
那我們來看當(dāng)1.1111...1,小數(shù)點(diǎn)后接52個(gè)1,這是精度最大顯示,
要取其最大值那就是向指數(shù)借52位,所以最大安全數(shù)就等于Math.pow(2,53)-1

同理Number.MIN_SAFE_INTEGER = -9007199254740991;
對(duì)最大安全數(shù)添加負(fù)號(hào)即可
重點(diǎn)0.1 + 0.2 怎么計(jì)算的呢?
首先,0.1轉(zhuǎn)二進(jìn)制 :0.0 001100110011001100110011..0011 0011,
改寫為科學(xué)計(jì)數(shù)法表示:1.100110011...0011(0011)*2^-4,
尾數(shù)位為52為需要取舍括號(hào)中最后一位舍去進(jìn)1,指數(shù)為-4,那個(gè)階碼就是-4+1023=1019,
最終浮點(diǎn)數(shù)格式:
0-01111111011-1001100110011001100110011001100110011001100110011010
同理0.2可以表示為:
0-01111111100-1001100110011001100110011001100110011001100110011010
最后兩者相加結(jié)果為:
0-01111111101-0011001100110011001100110011001100110011001100110100,
指數(shù)位為-2,
1.00110011001100110011001100110011001100110011001101(00)*2^-2
所以二進(jìn)制表示:
0.0100110011001100110011001100110011001100110011001101(00),
那么轉(zhuǎn)為十進(jìn)制就是0.1 + 0.2 = 0.30000000000000004 != 0.3 

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/97939.html

相關(guān)文章

  • JavaScript浮點(diǎn)運(yùn)算0.2+0.1 !== 0.3

    摘要:標(biāo)準(zhǔn)二進(jìn)制浮點(diǎn)數(shù)算法就是一個(gè)對(duì)實(shí)數(shù)進(jìn)行計(jì)算機(jī)編碼的標(biāo)準(zhǔn)。然后把取出的整數(shù)部分按順序排列起來,先取的整數(shù)作為二進(jìn)制小數(shù)的高位有效位,后取的整數(shù)作為低位有效位。 浮點(diǎn)運(yùn)算JavaScript 本文主要討論JavaScript的浮點(diǎn)運(yùn)算,主要包括 JavaScript number基本類型 二進(jìn)制表示十進(jìn)制 浮點(diǎn)數(shù)的精度 number 數(shù)字類型 在JavaScript中,數(shù)字只有numb...

    iflove 評(píng)論0 收藏0
  • 為什么0.1+0.2不等于0.3

    摘要:又如,對(duì)于,結(jié)果其實(shí)并不是,但是最接近真實(shí)結(jié)果的數(shù),比其它任何浮點(diǎn)數(shù)都更接近。許多語言也就直接顯示結(jié)果為了,而不展示一個(gè)浮點(diǎn)數(shù)的真實(shí)結(jié)果了。小結(jié)本文主要介紹了浮點(diǎn)數(shù)計(jì)算問題,簡單回答了為什么以及怎么辦兩個(gè)問題為什么不等于。 原文地址:為什么0.1+0.2不等于0.3 先看兩個(gè)簡單但詭異的代碼: 0.1 + 0.2 > 0.3 // true 0.1 * 0.1 = 0.01000000...

    Profeel 評(píng)論0 收藏0
  • JS數(shù)

    摘要:由于浮點(diǎn)數(shù)不是精確的值,所以涉及小數(shù)的比較和運(yùn)算要特別小心。根據(jù)標(biāo)準(zhǔn),位浮點(diǎn)數(shù)的指數(shù)部分的長度是個(gè)二進(jìn)制位,意味著指數(shù)部分的最大值是的次方減。也就是說,位浮點(diǎn)數(shù)的指數(shù)部分的值最大為。 一 前言 這篇文章主要解決以下三個(gè)問題: 問題1:浮點(diǎn)數(shù)計(jì)算精確度的問題 0.1 + 0.2; //0.30000000000000004 0.1 + 0.2 === 0.3; // ...

    williamwen1986 評(píng)論0 收藏0
  • 為什么JavaScript里面0.1+0.2 === 0.3是false

    摘要:返回是,這是為什么呢我們知道浮點(diǎn)數(shù)計(jì)算是不精確的,上面的返回式實(shí)際上是這樣的在的新規(guī)范加入了一個(gè)新的東西是在對(duì)象上面,新增一個(gè)極小的常量。根據(jù)規(guī)格,它表示與大于的最小浮點(diǎn)數(shù)之間的差。上面的代碼為浮點(diǎn)數(shù)運(yùn)算,部署了一個(gè)誤差檢查函數(shù)。 0.1+0.2 === 0.3 //返回是false, 這是為什么呢?? 我們知道浮點(diǎn)數(shù)計(jì)算是不精確的,上面的返回式實(shí)際上是這樣的:0.1 + 0.2 = ...

    nicercode 評(píng)論0 收藏0
  • javascript0.1 + 0.2 != 0.3?

    摘要:按照的數(shù)字格式,整數(shù)有的范圍是,而且只能表示有限個(gè)浮點(diǎn)數(shù),能表示的個(gè)數(shù)為個(gè)。 0.1+0.2 等于0.3嗎?相信拿著這條題目隨便問一個(gè)高年級(jí)的小學(xué)生,他們都會(huì)毫不猶豫都回答:相等。是的,相等是正常的,這是常識(shí)。但是都說實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn),拿這道簡單的算術(shù)題用javascript在chrome控制臺(tái)試驗(yàn)一下: 結(jié)果令人大跌眼鏡,在控制臺(tái)輸入0.1+0.2 == 0.3返回的結(jié)果竟然...

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

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

0條評(píng)論

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