我想我在处理大数时遇到了问题。
Java中的计算:
int n = 4451 + 554 * 57;
n = n << 13 ^ n;
System.out.println(n * (n * n * 15731 + 789221) + 1376312589);
=> 587046333
在JavaScript中:
var n = 4451 + 554 * 57;
n = n << 13 ^ n;
console.log(n * (n * n * 15731 + 789221) + 1376312589);
=> 4.043454188561781e+29
JavaScript版本存在什么问题,我该如何修复,以使JavaScript的结果与Java的结果相同?
编辑:尝试使用:https://github.com/jtobey/javascript-bignum,但结果为0。
var test = new BigInteger(295120061).multiply( new BigInteger(295120061)
.multiply(new BigInteger(295120061))
.multiply(new BigInteger(15731))
.add(new BigInteger(789221)))
.add(new BigInteger(1376312589));
=> 测试 = 0
n
声明为long
,会发生什么? - ajbdouble
(或BigInteger
,如果您需要精确结果) - fabian