Javascript 긴 정수
Javascript에서 가장 이상한 것 중 하나를 봤어요.서버측(스프링):
@RequestMapping(value = "/foo", method = RequestMethod.GET)
@ResponseBody
public Long foo() {
return 793548328091516928L;
}
하나의 긴 값을 반환하고 다음을 수행합니다.
$.get('/foo').done(function(data){
console.log(data);
});
마지막 두 자리 숫자를 0으로 대체(반올림)한 긴 정수를 "793548328091516900"으로 나타냅니다.브라우저의 주소창에서 GET 요청을 하면 번호가 올바르게 표시되므로 JS의 문제라고 생각합니다.
서버에서 긴 문자열이 아닌 문자열을 반환하고 다음을 사용하여 처리합니다.
var x = new Number(data).toFixed();
분명한 해결책이죠.다만, 일부 필드(일부 네스트)가 다음과 같이 입력되는 복잡한 POJO(JSON으로 변환)를 처리해야 할 정도로 운이 좋은 것은 아닙니다.java.lang.Long
이 POJO를 Long이라고 입력하지 않은 다른 오브젝트에 입력하려고 하면 번거롭습니다.
그 장애에 대한 보다 명확한 해결책은 없을까?
자바에서는 64비트의 정수를 사용하고 있습니다.
JavaScript에서는 모든 숫자는 64비트 부동소수점 숫자입니다.이는 자바스크립트에서 모든 자바 롱을 나타낼 수 없음을 의미합니다.사마귀의 크기는 약 53비트입니다. 즉, 당신의 숫자는793548328091516928
는 JavaScript 번호로 정확하게 나타낼 수 없습니다.
만약 당신이 정말로 그러한 숫자들을 다룰 필요가 있다면, 당신은 그것들을 다른 방법으로 표현해야 한다.이것은 문자열이거나 숫자 배열과 같은 특정 표현일 수 있습니다.일부 "빅넘버" 라이브러리는 JavaScript에서 사용할 수 있습니다.
늦더라도 이 상황을 처음 실행한 다른 사람들을 확실히 도울 수 있습니다.
저도 JavaScript에서 큰 숫자에 대한 계산을 원했습니다.그러한 숫자들을 다룰 수 있는 많은 도서관이 있다.하지만 그들 중 대부분은 당신의 시간을 낭비할 수 있다.여기서 https://github.com/peterolson/BigInteger.js,은 (비노드 환경 및 노드 JS 환경을 위한) 직접적이고 완벽한 솔루션이며, 이용 가능한 많은 수의 모든 작업에 적합한 솔루션입니다.또는 modulo/remainer를 계산하는 다음과 같은 단순하고 샘플적인 HTML 코드 스니펫을 찾을 수 있습니다.
<script src="http://peterolson.github.com/BigInteger.js/BigInteger.min.js"></script>
<script type="text/javascript">
function modTest(){
var rem = bigInt("1738141852226360940").mod("32").valueOf();
console.log(rem);
document.getElementById("remainder").innerHTML = rem;
}
</script>
<BODY onload="modTest();">
<p id="remainder"></p>
</BODY>
긴 npm 패키지를 사용할 수 있습니다.
그 덕분에64 bits integers
JavaScript에 있습니다.
JavaScript 내장 메서드를 사용할 수도 있습니다.
언급URL : https://stackoverflow.com/questions/17320706/javascript-long-integer
'programing' 카테고리의 다른 글
@Roles Allowed vs. @PreAuthorize vs. @Secured (0) | 2023.03.15 |
---|---|
합계 및 tax_total Woocommerce 변경 (0) | 2023.03.15 |
C# .NET의 복잡한 JSON 오브젝트를 시리얼 해제하려면 어떻게 해야 하나요? (0) | 2023.03.15 |
Python의 JSON 어레이를 통한 루프 (0) | 2023.03.15 |
명령줄을 사용하여 JSON 개체의 항목을 계산하려면 어떻게 해야 합니까? (0) | 2023.03.15 |