为什么计算出的 modulo/remainder 运算符对于大数是错误的?

Why the modulo/remainder operator calculated is wrong for large numbers?

我想了解为什么我无法使用 JavaScript 计算出正确的模数。我试过的操作是:

回答错误

28493595674446332150349236018567871332790652257295571471311614363091332152517 % 6 = 4

结果应该是 1。

28493595674446332150349236018567871332790652257295571471311614363091332152517 % 6 = 1

我曾尝试将此数字转换为 BN,但不幸的是,我总是得到相同的答案。但是,如果您使用 wolfram alpha 或其他数学软件,它 returns 是正确答案。

这是怎么回事?我做错了什么?

JavaScript 中的整数范围是 +/- 9007199254740991 (Number.MAX_SAFE_INTEGER)。您的号码超出了 JS 的范围。

您也可以使用 BigInt 表示法来获得正确答案。 28493595674446332150349236018567871332790652257295571471311614363091332152517n % 6n

What is JavaScript's highest integer value that a number can go to without losing precision?