큰 정수로 작업 할 때 Java와 Javascript는 다른 결과를 생성합니다.Javascript의 Java int 연산
예 :getCode(1747,1763,-268087281,348400)
반환 자바 1921968083
하지만 자바 스크립트가 2.510115715670451e+22
를 반환합니다.
Java로 결과를 얻으려면 어떻게해야합니까?
몇 가지 연구를 해본 결과 문제는 부호있는/부호없는 32/64 비트 정수 연산과 관련이있는 것으로 보입니다. 나는 모든 작업에 |0
을 추가하려고 시도했지만 더 비슷하지만 동일하지 않은 1921618368
을 얻었습니다.
자바 :
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);
}
자바 스크립트 :
function getCode(intVal1,intVal2,intVal3,IntA) {
var intVal5 = intVal2^intVal3 ;
intVal5 = intVal5 + (intVal1 | IntA) ;
intVal5 = intVal5 * (intVal1 | intVal3 ) ;
intVal5 = intVal5 * (intVal2^IntA) ;
return intVal5;
}
스택 오버플로에 오신 것을 환영합니다! 코드에서 오류를 발견하도록 사람들에게 요청하는 것은 특히 생산적이지 않습니다. 디버거를 사용하거나 인쇄 문을 추가하여 프로그램의 진행 상황을 추적하고 발생할 것으로 예상되는 것과 비교하여 문제를 격리해야합니다. 이 둘이 갈라지면 문제를 발견했습니다. (그리고 필요한 경우, [최소 테스트 케이스] (http://sscce.org)를 구성해야합니다.) –
PHP가 필요한 이유는 무엇입니까? 귀하의 태그를 확인하시기 바랍니다 –
JavaScript에 정수가 없습니다. 우리에게 코드를 덤핑하는 대신 알고리즘을 설명하는 것이 유용 할 수 있습니다. –