成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

警告:小心巨型數(shù)字的溢出異常

liaorio / 2204人閱讀

摘要:今天遇到個(gè)問(wèn)題后端設(shè)置了一個(gè)數(shù)字在中。果不其然,的輸出是。很明顯,這應(yīng)該是溢出的問(wèn)題,能處理的數(shù)字都是浮點(diǎn)數(shù),超出范圍則會(huì)忽略了。

今天遇到個(gè)問(wèn)題:后端設(shè)置了一個(gè) id=32132132132132112(數(shù)字) 在 cookie 中。

我為了偷懶,用了個(gè)第三方組件去解析 cookie,然后發(fā)現(xiàn)這個(gè)數(shù)字被解析出來(lái)變成了 32132132132132110

百思不得其解,這么一個(gè)簡(jiǎn)單的 cookie parse 的組件怎么會(huì)發(fā)生這么奇怪的問(wèn)題。

翻了下源碼發(fā)現(xiàn)有這么一句:JSON.parse(xxx)
果不其然,JSON.parse(32132132132132112) 的輸出是 32132132132132110

很明顯,這應(yīng)該是溢出的問(wèn)題,JS 能處理的數(shù)字都是浮點(diǎn)數(shù),超出范圍則會(huì)忽略了。

JS中整數(shù)的數(shù)字范圍是 -2^53~2^53, 超出則視為 2^53 處理,注意這個(gè)并不會(huì)報(bào)錯(cuò),所以如果你在使用巨型數(shù)字前沒(méi)有意識(shí)到這個(gè)問(wèn)題,意味著項(xiàng)目上線后,你將可能丟失用戶(hù)數(shù)據(jù)。

所以遇到這種問(wèn)題,要么限制數(shù)字輸入在可控范圍內(nèi),要么在不需要計(jì)算的時(shí)候,將這種數(shù)字串存為字符串,要么使用一些能處理巨型計(jì)算的庫(kù)來(lái)解決問(wèn)題,比如 https://github.com/jtobey/javascript-bignum 或 https://www.npmjs.com/package/json-bigint

參考資料:https://www.irt.org/script/1031.htm

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

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

相關(guān)文章

  • 一次線上問(wèn)題排查所引發(fā)思考

    摘要:直到有一天你會(huì)碰到線上奇奇怪怪的問(wèn)題,如線程執(zhí)行一個(gè)任務(wù)遲遲沒(méi)有返回,應(yīng)用假死。正好這次借助之前的一次生產(chǎn)問(wèn)題來(lái)聊聊如何排查和解決問(wèn)題。本地模擬上文介紹的是線程相關(guān)問(wèn)題,現(xiàn)在來(lái)分析下內(nèi)存的問(wèn)題。盡可能的減少多線程競(jìng)爭(zhēng)鎖。 showImg(https://segmentfault.com/img/remote/1460000015568421?w=2048&h=1150); 前言 之前或...

    levy9527 評(píng)論0 收藏0
  • Java 常見(jiàn)內(nèi)存溢出異常與代碼實(shí)現(xiàn)

    摘要:堆堆是用來(lái)存儲(chǔ)對(duì)象實(shí)例的因此如果我們不斷地創(chuàng)建對(duì)象并且保證和創(chuàng)建的對(duì)象之間有可達(dá)路徑以免對(duì)象被垃圾回收那么當(dāng)創(chuàng)建的對(duì)象過(guò)多時(shí)會(huì)導(dǎo)致內(nèi)存不足進(jìn)而引發(fā)異常上面是一個(gè)引發(fā)異常的代碼我們可以看到它就是通過(guò)不斷地創(chuàng)建對(duì)象并將對(duì)象保存在中防止其被 Java 堆 OutOfMemoryError Java 堆是用來(lái)存儲(chǔ)對(duì)象實(shí)例的, 因此如果我們不斷地創(chuàng)建對(duì)象, 并且保證 GC Root 和創(chuàng)建的對(duì)象...

    whatsns 評(píng)論0 收藏0
  • 【閱讀筆記】JavaScript語(yǔ)言精粹

    摘要:對(duì)之前看高級(jí)程序設(shè)計(jì)時(shí)沒(méi)有注意到的一些知識(shí)點(diǎn),結(jié)合本書(shū)做以補(bǔ)充語(yǔ)法注釋源于的型既可以出現(xiàn)在字符串字面量中,也可能出現(xiàn)在正則表達(dá)式字面量中,如故一般建議使用型注釋保留字語(yǔ)句變量參數(shù)屬性名運(yùn)算符和標(biāo)記等標(biāo)識(shí)符不允許使用保留字,此外在對(duì)象字面量中 對(duì)之前看《JavaScript高級(jí)程序設(shè)計(jì)》時(shí)沒(méi)有注意到的一些知識(shí)點(diǎn),結(jié)合本書(shū)做以補(bǔ)充 語(yǔ)法 注釋 源于PL/I的/* */型既可以出現(xiàn)在字符串字...

    cucumber 評(píng)論0 收藏0
  • JS 整型你懂了嗎?

    摘要:浮點(diǎn)數(shù)并不是能夠精確表示范圍內(nèi)的所有數(shù)的,雖然浮點(diǎn)型的范圍看上去很大。但其實(shí)浮點(diǎn)數(shù)在保存數(shù)字的時(shí)候做了規(guī)格化處理,以進(jìn)制為例小數(shù)點(diǎn)前只需要保留位數(shù)對(duì)于二進(jìn)制來(lái)說(shuō),小數(shù)點(diǎn)前保留一位,規(guī)格化后始終是節(jié)省了,這個(gè)并不需要保存。 JS 中的最大安全整數(shù)是多少? JS 中所有的數(shù)字類(lèi)型,實(shí)際存儲(chǔ)都是通過(guò) 8 字節(jié) double 浮點(diǎn)型 表示的。浮點(diǎn)數(shù)并不是能夠精確表示范圍內(nèi)的所有數(shù)的, 雖然 ...

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

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

0條評(píng)論

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