我正在编写一个应该执行权力的函数,但只显示指定的最后 n 位。它工作得很好……主要是。出于某种原因,当我指定我想要的最后几个数字时,它一直运行良好,一直到并包括数字 12。任何超过 12 的数字量似乎给了我一个非常奇怪的数字。我知道我一定遗漏了一些明显的东西,但我真的没有看到。
这是代码:
function power(base, exponent, digits) {
total = base;
for(i = 1; i < exponent; i++) {
total = total * base;
if(total.toString().length > digits) {
total = total.toString().substr(total.toString().length - digits, digits);
}
}
return total;
}
因此,对于一些示例(显示 12 位及更低的数字可以正常工作):
如果我做 power(999, 999, 1) 我最终得到 => 9
如果我做 power(999, 999, 5) 我最终得到 => 98999
如果我做 power(999, 999, 12) 我最终得到 => 000499998999
这是它开始搞砸的地方:
如果我做 power(999, 999, 13) 我最终得到 => 5710054009000
如果我做 power(999, 999, 14) 我最终得到 => '79077027006000'
起初我以为我达到了某种整数限制,而科学记数法把事情搞砸了,但我不认为是这种情况,因为它应该可以达到 20 位数字。
我怀疑我在 if 语句中减少字符串的方式有问题。但我不确定为什么它不会在 13 位以下的计算中搞砸。
谢谢!