首页 > 解决方案 > 为什么计算的模/余数运算符对于大数是错误的?

问题描述

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

错误的答案

28493595674446332150349236018567871332790652257295571471311614363091332152517 % 6 = 4

结果应该是 1。

28493595674446332150349236018567871332790652257295571471311614363091332152517 % 6 = 1

我试图将这个数字转换为 BN,但不幸的是我总是得到相同的答案。但是,如果您使用 wolfram alpha 或其他数学软件,它会返回正确的答案。

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

标签: javascriptbignumwolframalpha

解决方案


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

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

请参阅JavaScript 在不丢失精度的情况下可以达到的最大整数值是多少?


推荐阅读