我遇到了大量問題,我想。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