我启动了Euler项目。我在问题2上,并提出了此代码以求出甚至400万斐波纳契数的总和。该代码似乎可以满足我的要求。我确实看到了运行代码时列出的正确金额。我真正感到困惑的唯一部分是结果中显示的最后一个数字。它显示了以下内容:

JS代码:

var previous = 0;
var current = 1;
var sum = 0;
var next;

   for(i = 1; i < 100; i++){
        next = current + previous;
        previous = current;
        current = next;
        if(current % 2 === 0 && current < 4000000) {
            sum += current;
        console.log(sum);
        }
   }

结果:
2
10
44
188
798
3382
14328
60696
257114
1089154
4613732 (this is the number i was trying to get)
=> 354224848179262000000 (confused as to why this number shows up and what it represents)

最佳答案

让我分解一下:

为什么会出现?

在控制台上,您将看到执行的任何表达式的结果。如果执行代码块,您将看到您在该代码块中执行的最后一个表达式。从直觉上来说,在这种情况下,它是current = next的结果,因为if语句不是最后一次通过for循环运行。

为什么下一个等于354224848179262000000?

百分位数的斐波那契数为354224848179261915075。但是,当您的数字超过某个点并开始假设数字的所有下半部分为零时,JavaScript会失去精度。有关移动的详细信息,请参见以下问题:Why does JavaScript think 354224848179262000000 and 354224848179261915075 are equal?

关于javascript - 斐波那契数列(JS)-偶数之和,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32085932/

10-10 22:01