国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

跟我學(xué)習(xí)javascript的浮點數(shù)精度_javascript技巧

來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-27 21:45:30
文檔

跟我學(xué)習(xí)javascript的浮點數(shù)精度_javascript技巧

跟我學(xué)習(xí)javascript的浮點數(shù)精度_javascript技巧:大多數(shù)編程語言都有幾種數(shù)值型數(shù)據(jù)類型,但是JavaScript卻只有一種。你可以使用typeof 運算符查看數(shù)字的類型。不管是整數(shù)還是浮點數(shù),JavaScript都將它們簡單地歸類為數(shù)字。 typeof 17; //number typeof 98.6; //number typeof
推薦度:
導(dǎo)讀跟我學(xué)習(xí)javascript的浮點數(shù)精度_javascript技巧:大多數(shù)編程語言都有幾種數(shù)值型數(shù)據(jù)類型,但是JavaScript卻只有一種。你可以使用typeof 運算符查看數(shù)字的類型。不管是整數(shù)還是浮點數(shù),JavaScript都將它們簡單地歸類為數(shù)字。 typeof 17; //number typeof 98.6; //number typeof

大多數(shù)編程語言都有幾種數(shù)值型數(shù)據(jù)類型,但是JavaScript卻只有一種。你可以使用typeof 運算符查看數(shù)字的類型。不管是整數(shù)還是浮點數(shù),JavaScript都將它們簡單地歸類為數(shù)字。

事實上,JavaScript中所有的數(shù)字都是雙精度浮點數(shù)。這是由IEEE754標(biāo)準(zhǔn)制定的64位編碼數(shù)字——即“doubles”。如果這一事實使你疑惑JavaScript是如何表示整數(shù)的,請記住,雙精度浮點數(shù)能完美地表示高達(dá)53位精度的整數(shù)。從–9 007 199 254 740 992(–253)到9 007 199 254 740 992(253)的所有整數(shù)都是有效的雙精度浮點數(shù)。因此,盡管JavaScript中缺少明顯的整數(shù)類型,但是完全可以進(jìn)行整數(shù)運算。
大多數(shù)的算術(shù)運算符可以使用整數(shù)、實數(shù)或兩者的組合進(jìn)行計算。

然而位算術(shù)運算符比較特殊。JavaScript不會直接將操作數(shù)作為浮點數(shù)進(jìn)行運算,而是會將其隱式地轉(zhuǎn)換為32位整數(shù)后進(jìn)行運算。(確切地說,它們被轉(zhuǎn)換為32位大端(big-endian)的2的補碼表示的整數(shù)。)以按位或運算表達(dá)式為例:

看似簡單的表達(dá)式實際上需要幾個步驟來完成運算。如前所述,JavaScript中的數(shù)字8和1都是雙精度浮點數(shù)。但是它們也可以表示成32位整數(shù),即32位0、1的序列。整數(shù)8表示為32位二進(jìn)制序列如下所示:

00000000000000000000000000001000

你自己也可以使用數(shù)字類型的toString方法來查看:

(8).toString(2) //"1000"

toString方法的參數(shù)指定了其轉(zhuǎn)換基數(shù),此例子以基數(shù)2(即二進(jìn)制)表示。結(jié)果值省略了左端多余的0(位),因為它們并不影響最終值。
整數(shù)1表示為32位二進(jìn)制如下所示:

00000000000000000000000000000001

按位或運算表達(dá)式合并兩個比特序列。只要參與運算的兩位比特中任意一位為1,運算結(jié)果的該位就為1。以位模式表示的結(jié)果如下:

00000000000000000000000000001001

這個序列表示整數(shù)9。你可以使用標(biāo)準(zhǔn)的庫函數(shù)parseInt驗證,同樣以2作為基數(shù):

(同樣,前導(dǎo)0位是不必要的,因為它們并不影響運算結(jié)果。)
所有位運算符的工作方式都是相同的。它們將操作數(shù)轉(zhuǎn)換為整數(shù),然后使用整數(shù)位模式進(jìn)行運算,最后將結(jié)果轉(zhuǎn)換為標(biāo)準(zhǔn)的JavaScript浮點數(shù)。一般情況下,JavaScript引擎需要做些額外的工作來進(jìn)行這些轉(zhuǎn)換。因為數(shù)字是以浮點數(shù)存儲的,必須將其轉(zhuǎn)換為整數(shù),然后再轉(zhuǎn)換回浮點數(shù)。然而,在某些情況下,算術(shù)表達(dá)式甚至變量只能使用整數(shù)參與運算,優(yōu)化編譯器有時候可以推斷出這些情形而在內(nèi)部將數(shù)字以整數(shù)的方式存儲以避免多余的轉(zhuǎn)換。

關(guān)于浮點數(shù)的最后警示是,你應(yīng)該對它們保持時刻警惕。浮點數(shù)看似熟悉,但是它們是出了名的不精確。甚至一些看起來最簡單的算術(shù)運算都會產(chǎn)生不正確的結(jié)果。

0.1+0.2; 0.300000000000004

盡管64位的精度已經(jīng)相當(dāng)高了,但是雙精度浮點數(shù)也只能表示一組有限的數(shù)字,而不能表示所有的實數(shù)集。浮點運算只能產(chǎn)生近似的結(jié)果,四舍五入到最接近的可表示的實數(shù)。當(dāng)你執(zhí)行一系列的運算,隨著舍入誤差的積累,運算結(jié)果會越來越不精確。舍入也會使我們通常所期望的算術(shù)運算定律產(chǎn)生一些出人意料的偏差。例如,實數(shù)滿足結(jié)合律,這意味著,對于任意的實數(shù)x,y,z,總是滿足(x + y) + z = x + (y + z)。

然而,對于浮點數(shù)來說,卻并不總是這樣。

浮點數(shù)權(quán)衡了精度和性能。當(dāng)我們關(guān)心精度時,要小心浮點數(shù)的局限性。一個有效的解決方法是盡可能地采用整數(shù)值運算,因為整數(shù)在表示時不需要舍入。當(dāng)進(jìn)行貨幣相關(guān)的計算時,程序員通常會按比例將數(shù)值轉(zhuǎn)換為最小的貨幣單位來表示再進(jìn)行計算,這樣就可以以整數(shù)進(jìn)行計算。例如,如果上面的計算是以美元為單位,那么,我們可以將其轉(zhuǎn)換為整數(shù)表示的美分進(jìn)行計算。

對于整數(shù)運算,你不必?fù)?dān)心舍入誤差,但是你還是要當(dāng)心所有的計算只適用于–253~253的整數(shù)。

提示

  • JavaScript的數(shù)字都是雙精度的浮點數(shù)。
  • JavaScript中的整數(shù)僅僅是雙精度浮點數(shù)的一個子集,而不是一個單獨的數(shù)據(jù)類型
  • 位運算符將數(shù)字視為32位的有符號整數(shù)。
  • 聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    跟我學(xué)習(xí)javascript的浮點數(shù)精度_javascript技巧

    跟我學(xué)習(xí)javascript的浮點數(shù)精度_javascript技巧:大多數(shù)編程語言都有幾種數(shù)值型數(shù)據(jù)類型,但是JavaScript卻只有一種。你可以使用typeof 運算符查看數(shù)字的類型。不管是整數(shù)還是浮點數(shù),JavaScript都將它們簡單地歸類為數(shù)字。 typeof 17; //number typeof 98.6; //number typeof
    推薦度:
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 日韩 国产 欧美 精品 在线 | 国产不卡视频在线观看 | 国产在线看不卡一区二区 | 亚洲一级二级 | 欧美日韩精品一区二区三区视频播放 | 可播放的免费男男videos不卡 | 成人精品久久 | 亚洲视频在线免费播放 | 亚洲日韩视频 | 国产精品久久久久aaaa | 国产成人久久精品一区二区三区 | 欧美色亚洲图 | 欧美一区二区在线观看 | 亚洲欧洲在线视频 | 成人精品视频一区二区在线 | 免费看特级淫片日本 | 欧美一区二区三区在线播放 | 欧美 日韩 国产在线 | 国产精品久久久久久久久久久不卡 | 亚洲一级毛片免观看 | 国产高清视频免费 | 国产精品亚洲国产三区 | 国产午夜视频在线观看 | 日韩高清专区 | 日韩视频在线观看 | 91欧美激情一区二区三区成人 | 欧美a在线观看 | 日韩精品一区二区三区四区 | 亚洲国产综合久久精品 | 欧美高清一区二区三区欧美 | 国产精品毛片va一区二区三区 | 一97日本道伊人久久综合影院 | 国产精品久久久久久亚洲伦理 | 久久成人国产精品二三区 | 日韩欧美极品 | 欧美日韩一区二区三区在线 | 国产欧美另类久久精品91 | 欧美 日韩 国产 在线 | 99国产精品高清一区二区二区 | 青春草视频在线 | 日韩欧美在线第一页 |