簡體   English   中英

在JavaScript中無法將極大數量增加一個

[英]Unable to increase extremely large number by one in JavaScript

9223372036854775808這個數字增加一個: 9223372036854775808

var number = 9223372036854775808;
var plusOne = number + 1;

這應該產生922337203685477580 9 ,但它產生9223372036854776000。

為什么? 更重要的是,我該如何解決這個問題?

JavaScript中最大的可表示數字(2^53) - 1 ,或者,寫出來的, 9007199254740991 您擁有的號碼9223372036854775808是該數量的1024倍

如果要使用大於上面的數字,則應使用大整數庫。 但是,JavaScript沒有內置的,因此您需要自己抓取它。 就個人而言,當我處理涉及非常大數字的事情時,我使用大整數 ,例如Project Euler。

這與JavaScript內部存儲數字為(雙精度)浮點有關。 隨着浮點數的增加,數字變得越來越稀疏,直到你得到不正確的結果,因為下一個可表示的數字超過1(如你的例子中所示)。 要正確處理大數字,您需要使用適當的大數字庫,例如javascript-bignum 如果只需要整數,可以使用BigInteger.js

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM