이 기사에서는 JS 긴 정수 정밀도 문제를 예시로 분석합니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 분석은 다음과 같습니다.
문제 설명:
백그라운드에 Java 코드를 동적으로 호출하는 스크립트를 작성할 수 있는 스크립트 기능이 있습니다
스크립트가 성공적으로 실행되었으나 결과가 설정과 다릅니다
보기 로그 재충전 보상이 전송되었습니다. roleId=10214734953631044;
이 캐릭터의 ID번호가 1개 적네요....
문제 분석:
JS 정밀도 문제여야 합니다.
정확성
정수(소수점이나 지수 표기 없음)는 최대 15자리까지 가능합니다.
최대 소수 자릿수는 17이지만 부동 소수점 연산이 항상 100% 정확하지는 않습니다.
스크립트 수정
출력:
1.0214734953631044E16;
이것은 JavaScript의 잘못도 아니고 Java의 잘못도 아닙니다. 위의 Long으로의 변환은 실제로 roleId=10214734953631044;
그게 가능할까요?
자바스크립트 콘솔 입력은 모두 문자열이며, 자바에서 Integer.valueOf 또는 Long.valueOf 변환을 호출합니까?
해결책:
문자 ID를 JavaScriptEngine에 문자열로 전달하는 일반적인 변환 방법을 작성하세요
문자열로 선언
실행 성공했으니 이렇게 사용해보세요~
이 기사가 모든 사람의 JavaScript 프로그래밍 설계에 도움이 되기를 바랍니다.