我正在研究项目 Euler Problem 104的问题 n\xc2\xb0104并想用 javascript 来完成。
\n\n为了解决这个问题,我需要计算斐波那契序列的大值,但是这个序列产生的数字太大,无法用经典的 Number 处理,所以我使用最新版本的 javascript 支持的 BigInt。
\n\n一旦我将特定结果存储在 BigInt 中,我需要检查它的前 10 位和最后一位数字。
\n\n为了从 Number 中获取数字,我们通常会执行如下代码所示的操作,但是当数字变得非常大时,就会出现问题:
\n\nlet 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 resultRun Code Online (Sandbox Code Playgroud)\r\n似乎“toString()”方法仅使用 Number 类型的精度(我相信是 2^53),因此我们很快就会失去 BigInt 数字最后一位数字的精度。问题是我找不到其他方法来提取这些数字。
\n\n编辑: \n我需要完美的精度,因为基本上我正在做的事情是:
\n\n计算斐波那契(500) = 280571172992510140037611932413038677189525
\n\n获取该数字的最后 10 位数字:8677189525(这是丢失精度的地方)
\n\n然后为了解决我的问题,我需要检查最后 10 位数字是否包含从 1 到 9 的所有数字
\n