因此,我已经成功编写了斐波那契序列来创建具有数字序列的array,但是我需要知道500th号的长度(多少位数)。

我试过下面的代码,但是它找到的是科学计数法的长度(22位),而不是应该返回的正确的105。

有什么想法如何将科学计数法转换为实际整数?

var fiblength = function fiblength(nth) {
    var temparr = [0,1];
    for(var i = 2; i<=nth; i++){
        var prev = temparr[temparr.length-2],
            cur = temparr[temparr.length-1],
            next = prev + cur;
            temparr.push(next);
    }
    var final = temparr[temparr.length-1].toString().length;
    console.log(temparr[temparr.length-1]);
    return final;
};
a = fiblength(500);
console.log(a);

最佳答案

为什么不使用将数字除以10直到数字小于1的简单过程。

这样简单的事情就可以工作(递归def obv也可以工作)

function getDigits(n) {
   var digits = 0;
   while(n >= 1) {
      n/=10;
      digits += 1;
   }
   return digits;
}

getDigits(200);//3
getDigits(3.2 * 10e20);//=>22

09-11 19:44