为什么我不能让javascript的大数字库工作?

Vie*_*ier 4 javascript math

寻找一个库与JavaScript的大量工作(大于2 ^ 53)我查了几个问题(JavaScript的大量库?以及是否有JavaScript的一个BIGNUM库?),然后修修补补带着一点点JavaScript的BIGNUM .jsbig.js,但问题在于我无法代表奇数,因为两者都有

Big(9007199254740995);
Run Code Online (Sandbox Code Playgroud)

SchemeNumber.fn["string->number"](9007199254740995);
Run Code Online (Sandbox Code Playgroud)

返回

9007199254740996
Run Code Online (Sandbox Code Playgroud)

而不是

9007199254740995
Run Code Online (Sandbox Code Playgroud)

正如我所料.

那么,我做错了吗?或者没有办法代表大的奇数?

Aak*_*shM 8

当你说这个

Big(9007199254740995)
Run Code Online (Sandbox Code Playgroud)

你没有给bignum图书馆一个机会!您的数字文字首先由纯JS解析,其中该数字不能完全表示.你可以简单地看到这个

window.alert(9007199254740995);
Run Code Online (Sandbox Code Playgroud)

哪个警报9007199254740996.

为了让您选择的bignum库成功表示此数字,您需要将其作为字符串传递,例如:

Big('9007199254740995')
Run Code Online (Sandbox Code Playgroud)

应该给你这个确切的数字,作为一个bignum.