Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
计算阶乘超出Javascript中的最大整数限制_Javascript_Algorithm - Fatal编程技术网

计算阶乘超出Javascript中的最大整数限制

计算阶乘超出Javascript中的最大整数限制,javascript,algorithm,Javascript,Algorithm,我试图创建一个函数来计算给定数字的阶乘。它工作正常,直到我将大于21的数字传递给函数。我明白!超过了整数的最大限制,但有解决方案吗!或者我做错了什么!请帮忙!下面是我的阶乘计算函数 function calculateFactorial(number) { var counter = 1; var factorial = number; if (number == 1) { factorial = number; } else { while(counter

我试图创建一个函数来计算给定数字的阶乘。它工作正常,直到我将大于21的数字传递给函数。我明白!超过了整数的最大限制,但有解决方案吗!或者我做错了什么!请帮忙!下面是我的阶乘计算函数

function calculateFactorial(number)
{
  var counter = 1;
  var factorial = number;
  if (number == 1) {
    factorial = number;
  }
  else {
    while(counter < number)
    {
      factorial = factorial * (number - counter);
      counter++;
    }
  }
  return factorial;
}
函数计算系数(数字)
{
var计数器=1;
var阶乘=数量;
如果(数字==1){
阶乘=数;
}
否则{
while(计数器<数字)
{
阶乘=阶乘*(数字-计数器);
计数器++;
}
}
收益因子;
}

您应该为javascript使用BigInteger库

你可以自己写(如果你不需要高级操作,写起来很简单也很有趣),或者你可以在线搜索。有很多这样的图书馆:

您可以:

  • 使用BigInteger

  • 使用带有斯特林公式的浮动


  • 您希望发生什么?你知道计算机上的数字限制在固定范围内,对吗?@j_random_hacker这个问题有一些解决办法…@j_random_hacker:是的,你是对的。我正在这里寻找一个解决办法。顺便说一句,谢谢你的建议,lodoI不会使用Javascript进行数学计算。实际上Javascript中的最大整数是2^53=9007199254740992。该值已超过19!看这里