2013-06-08 5 views
2

자바 서블릿에서 특정 요청이있을 때마다 64 비트 정수를 생성합니다.왜 내 정수는 약간 변경됩니까?

1)과 같이 작동하는 PHP 스크립트를 통해 MySQL 데이터베이스에 발신자

2) 얻기 HTTP에 JSON 인코딩 응답으로

1) : 나는 두 개의 방향으로 긴이를 보내 : Number는 (Long.toString()을 통해) ArrayList에 추가됩니다. 이 목록은 Gson 라이브러리를 통해 JSON 문자열로 변환됩니다. 그런 다음 HTTP 응답의 인쇄기로 인쇄됩니다.

2) 긴 매개 변수가 명령 줄 매개 변수로 전달 된 PHP 스크립트를 실행합니다. 그런 다음이 매개 변수를 읽고 SQL INSERT INTO 쿼리에 제공합니다.

결국이 두 숫자는 조금씩 다릅니다. 마지막 예에서, 나는 다음과 같은 얻을 :

1) -753774083758266880

2) -753774083758266887

내가 무엇을 놓치고

?

+0

다양한 단계를 디버깅 했습니까? 언제 바뀌나요? – namero999

+0

변경 사항이 정확히 어디에서 발생했는지 확인할 수 있습니까? – fge

+0

이 디버깅 방법을 올바르게 파악하려고합니다. 잘하면 뭔가를 곧 설정해 주실 수 있습니다. –

답변

0

이것은 답변이 아니지만 주석을 달기에는 너무 길다.

MySQL은 bigint-9223372036854775808의 값을 지원한다고 말합니다.

그러나 SQLFiddle에 다음 코드를

select cast('-753774083758266880' as signed), 
     cast('-753774083758266887' as signed), 
     cast('-9223372036854775807' as signed) 

결과 :

-753774083758266900 -753774083758266900 -9223372036854776000 

아마도 (양 또는 음) 정말 큰 값에 대한 지원을 규정 할 필요가있다. 또는 아마도 출력물에 이러한 숫자가 인쇄되는 방식과 관련이없는 아티팩트 일 수 있습니다.

메모 :이 값의 차이를 제대로 반영하므로 출력 문제 일 수 있습니다.

관련 문제