[SPRING] Javascript 긴 정수
SPRINGJavascript 긴 정수
나는 자바 스크립트에서 가장 이상한 것들 중 하나를 보았다. 서버 측 (스프링) :
@RequestMapping(value = "/foo", method = RequestMethod.GET)
@ResponseBody
public Long foo() {
return 793548328091516928L;
}
하나의 긴 값을 반환하고 :
$.get('/foo').done(function(data){
console.log(data);
});
마지막 정수 두 자리를 0으로 대체 (실제로 반올림)하여 "793548328091516900"으로 긴 정수를 나타냅니다. 모든 브라우저의 주소 표시 줄에서 GET 요청을하면 번호가 올바르게 표시됩니다. 따라서 이것이 제 생각에는 js 문제입니다.
서버에서 long 대신 문자열을 반환하고 다음을 사용하여 처리 :
var x = new Number(data).toFixed();
분명히 해결책입니다. 하지만 운이 좋지 않다. 일부 필드 (일부는 중첩 된)를 java.lang.Long 유형으로 입력 한 복잡한 POJO (JSON으로 변환)를 처리해야한다. 이 POJO를 Long에 입력 된 필드가없는 다른 객체로 캐스팅하려고하면 분명히 성가시다.
그 장애물에 대한 명확한 해결책이 있습니까?
해결법
-
==============================
1.Java에서는 64 비트 정수가 사용됩니다.
Java에서는 64 비트 정수가 사용됩니다.
자바 스크립트에서 모든 숫자는 64 비트 부동 소수점 숫자입니다. 즉, 모든 Java long을 JavaScript로 표현할 수 없습니다. 가수의 크기는 약 53 비트입니다. 즉, 793548328091516928의 숫자는 자바 스크립트 숫자로 정확하게 표현 될 수 없습니다.
그러한 숫자를 정말로 다룰 필요가 있다면, 다른 방법으로 표현해야합니다. 문자열이거나 숫자 배열과 같은 특정 표현 일 수 있습니다. JavaScript에서는 "큰 숫자"라이브러리를 사용할 수 있습니다.
-
==============================
2.늦을 지 모르지만이 상황을 처음으로 실행하는 다른 사람들에게 분명 도움이됩니다.
늦을 지 모르지만이 상황을 처음으로 실행하는 다른 사람들에게 분명 도움이됩니다.
JavaScript에서도 많은 계산을 원했습니다. 이러한 번호를 처리 할 수있는 많은 라이브러리가 있습니다. 그러나 그들 대부분은 당신의 많은 시간을 낭비 할 수 있습니다. 여기 https://github.com/peterolson/BigInteger.js는 비 노드 환경 및 노드 JS 환경을위한 직접적이고 완전한 솔루션이며 많은 수의 작업에 대한 작업 솔루션입니다. 모듈 또는 나머지를 계산하는 다음의 간단한 샘플 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>
from https://stackoverflow.com/questions/17320706/javascript-long-integer by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 봄 부팅 REST API - 요청 제한 시간? (0) | 2018.12.09 |
---|---|
[SPRING] Spring 4.2.3 및 fasterxml Jackson 2.7.0은 호환되지 않습니다. (0) | 2018.12.08 |
[SPRING] 최대 절전 모드 세션 및 트랜잭션 관리와 Spring을 통합하는 방법은 무엇입니까? (0) | 2018.12.08 |
[SPRING] 메모리 내 단위 테스트 방법 Spring-Jersey (0) | 2018.12.08 |
[SPRING] Spring - ServletContextListener에 의존성 주입 (0) | 2018.12.08 |