小编S. *_*ain的帖子

如何在 JavaScript 中从 BigInt 中获取数字?

我正在研究项目 Euler Problem 104的问题 n\xc2\xb0104并想用 javascript 来完成。

\n\n

为了解决这个问题,我需要计算斐波那契序列的大值,但是这个序列产生的数字太大,无法用经典的 Number 处理,所以我使用最新版本的 javascript 支持的 BigInt。

\n\n

一旦我将特定结果存储在 BigInt 中,我需要检查它的前 10 位和最后一位数字。

\n\n
\n\n

为了从 Number 中获取数字,我们通常会执行如下代码所示的操作,但是当数字变得非常大时,就会出现问题:

\n\n

\r\n
\r\n
let number = BigInt(123456789)\r\nconsole.log(number.toString())\r\nconsole.log(number.toString()[3]) // Result is fine\r\n\r\nlet bigNumber = BigInt(1234567891111111111111111111111111111)\r\nconsole.log(bigNumber.toString())\r\nconsole.log(bigNumber.toString()[30]) // unpredictable result
Run Code Online (Sandbox Code Playgroud)\r\n
\r\n
\r\n

\n\n

似乎“toString()”方法仅使用 Number 类型的精度(我相信是 2^53),因此我们很快就会失去 BigInt 数字最后一位数字的精度。问题是我找不到其他方法来提取这些数字。

\n\n

编辑: \n我需要完美的精度,因为基本上我正在做的事情是:

\n\n

计算斐波那契(500) = 280571172992510140037611932413038677189525

\n\n

获取该数字的最后 10 位数字:8677189525(这是丢失精度的地方)

\n\n

然后为了解决我的问题,我需要检查最后 10 位数字是否包含从 1 到 9 的所有数字

\n

javascript bigint

7
推荐指数
1
解决办法
1188
查看次数

标签 统计

bigint ×1

javascript ×1