因此,我已经成功编写了斐波那契序列来创建具有数字序列的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