Javascript 为什么不';难道这些大人物没有加入吗?
我制作了一个NodeJS程序,它将成对的整数(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())解决了这个问题 加法前两个事实
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());
}