Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.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_Node.js_Math_Biginteger - Fatal编程技术网

Javascript 为什么不';难道这些大人物没有加入吗?

Javascript 为什么不';难道这些大人物没有加入吗?,javascript,node.js,math,biginteger,Javascript,Node.js,Math,Biginteger,我制作了一个NodeJS程序,它将成对的整数(m,n)作为输入,并在控制台上打印它们的阶乘(facm,factn)的总和。我使用了BigInteger.js库,因此可以使用大数字进行计算 但是当我输入201时,程序只输出值20!而不是20+1.它没有增加。为什么? (由于某些原因,它适用于两个输入相同的情况,例如,20。当值较小时也适用。) 将var sum=factm.add(factn)替换为var sum=factm.add(factn.toString())解决了这个问题 加法前两个事实

我制作了一个NodeJS程序,它将成对的整数(
m,n
)作为输入,并在控制台上打印它们的阶乘(
facm,factn
)的总和。我使用了BigInteger.js库,因此可以使用大数字进行计算

但是当我输入
201
时,程序只输出值20!而不是20+1.它没有增加。为什么?

(由于某些原因,它适用于两个输入相同的情况,例如,
20
。当值较小时也适用。)


var sum=factm.add(factn)
替换为
var sum=factm.add(factn.toString())
解决了这个问题

加法前两个
事实
变量的最终值是多少?我无法在中复制。你确定数据没有问题吗?@Carcigenicate他们才20岁!和1!。我检查了那些不同值的。他们很好。只有添加项不起作用。@SergGr我签出了JSFIDLE,但在其中找不到对NodeJS的支持。这可能就是为什么它对你不起作用。我确信数据没有问题。我用不同的值进行了检查。@zadspecial,从技术上讲,浏览器不同于NodeJS,但如果存在特定于NodeJS的错误,我会非常惊讶,在浏览器中使用JSFIDLE这样的东西更容易。如果只运行fiddle(+
require
)中的代码,而不是本地节点中的循环和输入/输出,是否仍然会得到错误的答案(即与fiddle不同)?
var input = require('fs').readFileSync('/dev/stdin', 'utf8');
var lines = input.split('\n');
var bigInt = require("big-integer");

for (var i = 0; lines[i] != ""; i++) { 
    var strings = lines[i].split(" ");
    var m = parseInt(strings[0]);
    var n = parseInt(strings[1]);
    var factm = bigInt(1);
    var factn = bigInt(1);
    for (var a = m; a != 0; a--) {
        factm = factm.multiply(a);
    }
    for (var b = n; b != 0; b--) {
        factn = factn.multiply(b);
    }
    var sum = factm.add(factn);
    console.log(sum.toString());
}