我遇到了大量问题,我想。JavaScript中的计算结果不同于Java
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
如果在Java示例中将'n'声明为'long',会发生什么? – ajb 2014-11-22 17:37:09
然后我得到-1448455493533196867 – 2014-11-22 17:37:41
尝试解析长解析int而不是隐式var – 2014-11-22 17:39:59