當使用大整數操作時,Java和Javascript會產生不同的結果。JavaScript中的Java int操作
例如:getCode(1747,1763,-268087281,348400)
返回1921968083
在Java中,但JavaScript返回2.510115715670451e+22
。
如何在Java中使用Javascript獲取結果?
做了一些研究後,問題似乎與有符號/無符號32/64位整數運算有關。我曾嘗試將|0
添加到所有操作中,並得到了更接近但不完全相同的1921618368
。
的Java:
public String getCode(int intVal1, int intVal2, int intVal3, int IntA) {
int intVal5 = intVal2^intVal3 ;
intVal5 = intVal5 + (intVal1 | IntA) ;
intVal5 = intVal5 * (intVal1 | intVal3 ) ;
intVal5 = intVal5 * (intVal2^IntA) ;
return String.valueOf(intVal5);
}
的Javascript:
function getCode(intVal1,intVal2,intVal3,IntA) {
var intVal5 = intVal2^intVal3 ;
intVal5 = intVal5 + (intVal1 | IntA) ;
intVal5 = intVal5 * (intVal1 | intVal3 ) ;
intVal5 = intVal5 * (intVal2^IntA) ;
return intVal5;
}
歡迎來到Stack Overflow!要求人們發現代碼中的錯誤並不是特別有效。您應該使用調試器(或者添加打印語句)來分析問題,追蹤程序的進度,並將其與預期發生的情況進行比較。只要兩者發生分歧,那麼你就發現了你的問題。 (然後如果有必要,你應該構造一個[最小測試用例](http://sscce.org)。) –
爲什麼使用php?請檢查您的標籤 –
JavaScript中沒有ints。解釋算法而不是僅僅向我們傾倒代碼可能是有用的。 –