【问题标题】:Issues with displaying large numbers in javascript在 javascript 中显示大数字的问题
【发布时间】:2018-03-15 10:23:32
【问题描述】:

我正在尝试解决代码大战中的一个问题。问题如下:

在数学中,斐波那契数列在以下整数序列中,称为斐波那契数列,其特点是其中的每个数字都是前两个数字的和:

1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ... 实现函数getFibonacci(n),它将返回斐波那契数列n位置上数字的字符串表示。

我已经制定了我的代码,但是我的代码只有在测试数字很小时才能通过测试,并且在涉及大量数字时所有测试都失败并收到错误消息,例如“预期:'30010821454963453907530667147829489881',而不是得到:'3.001082145496346 e+37'”。 此外,我尝试在我的 return 语句的末尾添加 toNotExponential() 或 expandExponential() 以帮助显示完整的数字,但是,由于我不断收到错误提示“toNotExponential() 不是一个函数,这两个代码都可以工作" 或 " expandExponential() 不是函数"。 不知道怎么办,请帮忙。 我的代码如下...

    function getFibonacci(n) {
    var arr= [1,1];
    var len = arr.length;
    while(len<n){
    arr.push(arr[len-1]+arr[len-2]);
    len++;
   }
   return (arr[len-1]+"").toNotExponential();
   }

【问题讨论】:

标签: javascript arrays numbers int


【解决方案1】:

您可以使用给定数字各部分的总和作为字符串来执行数学过程。考虑到作为字符串的数字的.length 大于3 的数字的每三位可以被视为千位,其中将1 添加到999 将导致1000。然后我们可以声明,如果N 等于1000,则将N 添加到1000 将导致2000。因此,我们可以使用字符串的索引来确定我们在字符串中迭代的精确千位,并选择3 的组来确定是否应该重新计算相邻的3 集合中的一个或多个数字并显示作为没有E-notation 的数字。见How do I add 1 to a big integer represented as a string in JavaScript?。

【讨论】:

    猜你喜欢
    • 2018-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-25
    • 2021-10-10
    • 1970-01-01
    • 2018-06-15
    • 2021-03-23
    相关资源
    最近更新 更多