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

資訊專欄INFORMATION COLUMN

警告:小心巨型數字的溢出異常

liaorio / 2206人閱讀

摘要:今天遇到個問題后端設置了一個數字在中。果不其然,的輸出是。很明顯,這應該是溢出的問題,能處理的數字都是浮點數,超出范圍則會忽略了。

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

我為了偷懶,用了個第三方組件去解析 cookie,然后發現這個數字被解析出來變成了 32132132132132110

百思不得其解,這么一個簡單的 cookie parse 的組件怎么會發生這么奇怪的問題。

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

很明顯,這應該是溢出的問題,JS 能處理的數字都是浮點數,超出范圍則會忽略了。

JS中整數的數字范圍是 -2^53~2^53, 超出則視為 2^53 處理,注意這個并不會報錯,所以如果你在使用巨型數字前沒有意識到這個問題,意味著項目上線后,你將可能丟失用戶數據。

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

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

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/79857.html

相關文章

  • 一次線上問題排查所引發思考

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

    levy9527 評論0 收藏0
  • Java 常見內存溢出異常與代碼實現

    摘要:堆堆是用來存儲對象實例的因此如果我們不斷地創建對象并且保證和創建的對象之間有可達路徑以免對象被垃圾回收那么當創建的對象過多時會導致內存不足進而引發異常上面是一個引發異常的代碼我們可以看到它就是通過不斷地創建對象并將對象保存在中防止其被 Java 堆 OutOfMemoryError Java 堆是用來存儲對象實例的, 因此如果我們不斷地創建對象, 并且保證 GC Root 和創建的對象...

    whatsns 評論0 收藏0
  • 【閱讀筆記】JavaScript語言精粹

    摘要:對之前看高級程序設計時沒有注意到的一些知識點,結合本書做以補充語法注釋源于的型既可以出現在字符串字面量中,也可能出現在正則表達式字面量中,如故一般建議使用型注釋保留字語句變量參數屬性名運算符和標記等標識符不允許使用保留字,此外在對象字面量中 對之前看《JavaScript高級程序設計》時沒有注意到的一些知識點,結合本書做以補充 語法 注釋 源于PL/I的/* */型既可以出現在字符串字...

    cucumber 評論0 收藏0
  • JS 整型你懂了嗎?

    摘要:浮點數并不是能夠精確表示范圍內的所有數的,雖然浮點型的范圍看上去很大。但其實浮點數在保存數字的時候做了規格化處理,以進制為例小數點前只需要保留位數對于二進制來說,小數點前保留一位,規格化后始終是節省了,這個并不需要保存。 JS 中的最大安全整數是多少? JS 中所有的數字類型,實際存儲都是通過 8 字節 double 浮點型 表示的。浮點數并不是能夠精確表示范圍內的所有數的, 雖然 ...

    yuanxin 評論0 收藏0

發表評論

0條評論

liaorio

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<